Javaでは、次の方法でString配列を初期化することは完全に正当です。
String[] s = {"FOO", "BAR"};
ただし、パラメーターとして文字列配列をとるクラスをインスタンス化しようとすると、次のコードは許可されません。
Test t = new Test({"test"});
しかし、これは再び機能します:
Test t = new Test(new String[] {"test"});
誰かがこれがなぜなのか説明できますか?
String[] s = {"FOO", "BAR"};
これは宣言時にのみ許可されます
できません
String[] s;
s={"FOO", "BAR"};
なぜならType[] x = { ... }
は、配列の初期化構文です。 { ... }
は、特定のコンテキストでのみ特定の方法で解釈されます。
文字列配列を渡す簡単な方法が必要な場合は、可変引数を使用することをお勧めします
class Test {
public Test(String...args);
}
// same as new Test(new String[] { "test", "one" })
Test t = new Test("test", "one");