0

是否有任何简单的方法可以将任意长度列表中的所有值作为参数传递给方法。例如,在下面的代码中,我希望 method2 中的参数是位于参数列表中的值序列(但没有列表结构)。因为列表是任意长度的,所以我不能只运行一个循环并将列表中的每个值分配给一个变量,然后将这些变量传递给方法 2。

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

谢谢!〜瑞安

4

3 回答 3

3

你可以声明

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

有关详细信息,请参阅Java 可变参数文档

于 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 回答