2012-04-15 11 views
1

Antescript:まったく同じ質問を参照するようにタイトルが付けられているという前の質問があることを知っています。それはしません。配列(Java)のパラメータを使用したVararg初期化

とにかく、この質問はちょっと変わっています。ここで問題を回避する方法はたくさんありますが、どのように私が特定のジレンマを解決できるか興味があります。

可変部を使用して、おそらくタイプがIntegerの任意の数の要素を受け入れる方法があるとします。任意の長さの整数配列を持っている場合、配列の各要素で構成されるカンマ区切りのパラメータリストを使ってメソッドを呼び出す方法がありますか?

Integer[] paramList = new Integer {1, 2, 3}; 
varMethod(paramList[0], paramList[1], paramList[2]); 
// varMethod({{for (param : paramList) {param;}}}); 

public void varMethod(Integer...values) { 
    for (Integer value : values) { 
     foo(value); 
    } 
} 

コメントアウトされた行は、私が何をしたいのヒント:

はここで簡単な、不自然な例です。 paramList整数は任意の長さなので、明示的に要求された各要素(行2)でvarMethodを呼び出すことはできません。配列の要素からカンマ区切りのパラメタリストを動的に生成する方法があるのだろうかと思います。

また、このような例では、問題全体にアプローチするより良い方法があることを認識していますが、コードを簡略化してここで議論している特定の問題。投稿されたコードに対処するすべての回避策は、私が本当に取り組んでいる問題に一般化されず、最初にこの質問を策定しました。

答えて

5

私はあなただけを探していると思う:

varMethod(paramList); 

おそらく、あなたはInteger...は、通常のInteger[]配列の特別な変形であることを認識していませんでした。したがって、paramListはすでにInteger[]の配列であるため、メソッドに直接渡すことができます。

+0

あなたは私を打ち負かす.... – confucius

+0

完全に正しい;私はvarargsが配列の特殊なケースであることは知らなかった。ありがとう! – Walker

0

を呼び出すことができます。varMethod(paramList);