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。

4

2 回答 2

3

由于 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"});
于 2013-04-09T08:59:46.777 回答
2

在某种程度上... varargs 等效于数组,因此您可以使用以下内容:

Foo(file, new String[] { "string" });
Foo(file, "string", new String[] { "string" });
于 2013-04-09T09:00:07.847 回答