1

Antescript: 以前に SO の質問があり、そのタイトルがまったく同じ質問を指しているように聞こえることは承知しています。そうではありません。

とにかく、この質問は少し奇妙です。ここで問題を回避するためのより良い方法はたくさんありますが、特定のジレンマをどのように解決できるかについて興味があります.

おそらく type の任意の数の要素を受け入れるためにvarargsを使用するメソッドがあるとしましょう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整数は任意の長さであるため、varMethod明示的に要求された各要素 (2 行目) での呼び出しは機能しません。私が疑問に思っているのは、配列の要素からコンマ区切りのパラメーター リストを動的に生成する方法があるかどうかです。

繰り返しになりますが、このような例では、問題全体にアプローチするためのより良い方法があることを認識していますが、ここで説明している特定の問題にのみ関連するようにコードを単純化したことに注意してください. 投稿されたコードに対処する回避策は、私が実際に取り組んでいる問題に一般化されないため、最初にこの質問を定式化することになりました。

4

2 に答える 2

5

私はあなたが探しているだけだと思います:

varMethod(paramList);

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

于 2012-04-15T00:18:58.080 に答える
0

varMethod(paramList);を呼び出すだけです。

于 2012-04-15T00:19:47.577 に答える