2013-04-09 71 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" });