0

任意の長さのリスト内のすべての値をパラメーターとしてメソッドに渡す簡単な方法はありますか? たとえば、次のコードでは、method2 の params を params List にある値のシーケンスにする必要があります (ただし、List 構造はありません)。リストは任意の長さなので、単純にループを実行してリスト内の各値を変数に代入し、それらの変数を method2 に渡すことはできません。

void method1( List<Double> params ){
    void method2(params...)
}

ありがとう!〜ライアン

4

3 に答える 3

3

あなたは宣言することができます

public void method2(Double... doubles) {
}

詳細については、Java varargs のドキュメントを参照してください。

于 2012-07-31T23:14:16.013 に答える
1

method2 が可変数の引数を受け取ることができるようにするには、次のように宣言する必要があります。

void method2(Double ... args)

この場合、args は Double[] になります。

method1 で行う必要があるのは、List を Double[] に変換することです。

サンプルは次のとおりです。

public static void main(String[] args) {

    List<Double> list = new ArrayList<Double>();

    list.add(1.0);
    list.add(2.0);
    list.add(3.0);

    method1(list);
}

public static void method1(List<Double> list) {
    method2(list.toArray(new Double[] {}));
}

public static void method2(Double... args) {

    for (int i = 0; i < args.length; i++) {
        System.out.println(args[i]);
    }
}

お役に立てれば!

于 2012-07-31T23:34:36.833 に答える
0

この先どう?

void method1(Double... params ){
    method2(Arrays.asList(params));
}

これにより、次のようなことができるようになります

method1(1.0);
method1(1.0, 2.0);
method1(1.0, 2.0, 3.0);
method1(1.0, 2.0, 3.0, 4.0);
于 2012-07-31T23:16:37.383 に答える