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相当于数组…”