2013-04-09 82 views
3

我想实例化一个给定的类有以下两个构造函数:模糊的错误 - 可变参数和参数与同类型

public Foo(File jarFile, String... args) 
public Foo(File jarFile, String className, String... args) 

我所说的第一个构造函数是这样的:

Foo foo = new Foo(jarFile, "arg-val-1", "arg-val-2"); 

这给出了一个编译器错误“对PactProgram的引用不明确”,这是有道理的。

有没有办法强制使用其中一个构造函数?我无法更改界面。

调用这两个构造函数对我来说都没问题。只传递jar文件可以正常工作,但我需要传递参数。

我在Ubuntu上运行Oracle Java 1.6.0_38。

回答

3

由于可变参数相当于数组,你可以这样做,如果你想使用的第一个:

Foo foo = new Foo(jarFile, new String[]{"arg-val-1", "arg-val-2"}); 

对于第二个,使用:

Foo foo = new Foo(jarFile, "arg-val-1", new String[]{"arg-val-2"}); 
+1

谢谢 - 这个固定它! 我喜欢zibi的解释:“可变参数等同于数组......” – 2013-04-09 09:04:11

2

在一定程度上。 ..可变参数相当于阵列,所以你可以使用以下内容:

Foo(file, new String[] { "string" }); 
Foo(file, "string", new String[] { "string" });