2011-10-29 8 views
8

メソッドとして新しい配列を渡しても、その配列にデータが残っていますか?パラメータとしてのJava配列

例えば、私はこの方法を持っています:foo(String[])と私はこれをfoo(new String[] s = {"String1", "String2"})のように呼んでいます。しかし、これは有効なJavaではありません。

答えて

18

これは、「有効なJavaの方法」(のように、それはあなたが望むものをコンパイルしない)である:あなたがこの方法を変更する機会を持っている場合は、その後、

foo(new String[] {"String1", "String2"}); 

また、その後、有効で、次の

foo("String1", "String2"); 

:明示的に配列を作成するために、次のように

public void foo(String... strings) { 
    // ... 
} 

は、その後、あなたが必要とすることなく、それを使用することができます:あなたはまたvarargs引数を取る方法を変更することを検討することができます:

foo("String1"); 

foo("String1", "String2", "String3"); 

などです。

+0

vaueを取得するにはどうすればいいですか? –

4

ローカル変数sを作成しておきたい場合は、メソッド呼び出し内で変数を宣言することはできません。

String[] s = {"String1", "String2"}; 
foo(s); 

あなたはコール内でsを初期化することができますが、私はそうする理由が表示されない、プラスそれは本当に悪いになります:あなたは、コールの外で最初にそれを宣言する必要が

String[] s; 
foo(s = new String[] {"String1", "String2"}); 
1

だけ値を渡すと、もはや変数sを必要としない、このようにそれを行う場合:

foo(new String[] {"String1", "String2"}); 
0

あなたは変数を宣言することはできませんが、配列を渡すことができます。

foo(new String[] { "String1", "String2" }); 

同じ配列を後で参照する場合は、呼び出し前に宣言する必要があります。

0

foo(新しいString [] {"String1"、 "String2"})

関連する問題