3

次の 2 つのコンストラクターを使用して、特定のクラスをインスタンス化します。

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

2 つ目の場合は、次を使用します。

Foo foo = new Foo(jarFile, "arg-val-1", new String[]{"arg-val-2"});
于 2013-04-09T08:59:46.777 に答える
2

拡張するには...可変引数は配列と同等であるため、次を使用できます。

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