Java 歧义错误-varargs和参数类型相同

Java 歧义错误-varargs和参数类型相同,java,variadic-functions,Java,Variadic Functions,我想用以下两个构造函数实例化给定的类: 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的引用不明确”,这是有道理的 有没有办法强制使用其中一个构造函数?我无法更改

我想用以下两个构造函数实例化给定的类:

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。

由于varargs相当于数组,如果您想使用第一个,可以这样做:

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"});

在某种程度上。。。vararg相当于数组,因此可以使用以下内容:

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

谢谢-这就解决了!我喜欢zibi的解释:“Varargs相当于数组…”