是否有任何简单的方法可以将任意长度List中的所有值作为参数传递给方法。例如,在下面的代码中,我希望method2中的params是驻留在params列表中的值的序列(但没有List结构)。因为列表具有任意长度,所以我不能只运行循环并将列表中的每个值分配给变量,然后将这些变量传递给method2。
void method1( List<Double> params ){
void method2(params...)
}
谢谢! 〜瑞恩
答案 0 :(得分:3)
答案 1 :(得分:1)
要使方法2能够接收可变数量的参数,您需要以这种方式声明它:
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]);
}
}
希望这有帮助!
答案 2 :(得分: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);