2013-07-30 13 views
10

メソッドパラメータとして文字列配列を渡すために、最も効率的な方法は?Javaの私は</p> <pre><code>String[] args = {"a", "b", "c"}; method(args); private void method(String[] args){ return args; } </code></pre> <p>は、なぜ私が行うことができない次のコードがエラーなしで以下のいる

method({"a", "b", "c"}); 

このコードは、私が使用している実際の方法ではなく、その点を証明するための単なる例です。 2回目のメソッドを実行してコードをクリーンアップし、コードを一度だけ使用してメソッドに渡すときに、12の異なる配列を宣言しないようにしたいと思います。

質問の中心は、メソッドのパラメータとして文字列の配列を渡す最も効率的な方法です。

+1

[なぜ、{a、b、c}をメソッドに渡すのがうまくいかないのですか?](http://stackoverflow.com/questions/1017486/why-passing-abc-to-a-method-特に[配列の定数はイニシャライザでしか使用できないのですか?](http://www.windowsfiles.jpも参照してください)[http://stackoverflow.com/questions/5387643/java-array-initialization-syntax] ://stackoverflow.com/q/10520617/139010) –

+0

編集された質問と再定義された目標は、配列がパラメータとして渡される最も効率的な方法についてより具体的に言えば、リンクは可変引数について議論しないので、もはや考慮されるべきではない重複する。 –

+0

ちなみに、編集した質問_still_にはvarargsはありません。 –

答えて

6

あなたはvarargsを使いたいと思っています。可変長引数を送るために配列を作成する必要はありません。

String[] strings = method("a", "b", "c"); 

private String[] method(String... args){ 
    return args; 
} 

または

String[] strings = array("a", "b", "c"); 

private <T> T[] array(T... args){ 
    return args; 
} 

またはあなたが使用している場合

String[] strings = array("a, b, c"); 

private String[] array(String args){ 
    return args.split(", ?"); 
} 
+0

ありますか? "私は3つの文字列を持っていたので、Stringの後に? –

+1

varargsパラメータはメソッドの最後のパラメータにする必要がありますか?これは最初の質問でカバーされていないので、好奇心です。 –

+1

いいえ、ピリオドの数は文字列の数とは関係ありません。 varargsの構文です。そして、はい、varargsパラメータは最後にする必要があります。 – Kayaman

16

method(new String[]{ "a", "b", "c"}); 

システムは、それが新しい文字列の配列であることを知っているそのようにしてみてください。

2

あなたは配列への名前の参照を必要としない)。

のjavaは、PHPのようではありません。

method (new String[]{"a", "b"}); 
6

futher凝縮する場合:

method({ "a", "b", "c"}); 

を、その後のJavaを使用して、配列をしたいかどうかわかりませんStringまたはObject。 JavaはあなたがStringの配列を意味することを伝えることができ

method(new String[] { "a", "b", "c"}); 

その方法:あなたは明示的にこのようなものです、アレイの種類のJavaを伝えることができます。

関連する問題

 関連する問題