Java-将列表元素作为参数传递给无限制参数方法

Java-将列表元素作为参数传递给无限制参数方法,java,Java,我有一个参数不限的方法: void X(Object... values){}; 以及用户应输入的未知列表 现在我想把列表中的所有元素传递给方法X,比如 this.X(list.get(0), list.get(1)......); 有人能告诉我怎么做吗?您可以将单个项目或项目数组传递给这样的varargs方法。使用以下命令将列表转换为数组以传入: 声明为 void X(Object... values){}; void X(Object[] values){}; 类似于声明为 void

我有一个参数不限的方法:

void X(Object... values){};
以及用户应输入的未知列表

现在我想把列表中的所有元素传递给方法X,比如

this.X(list.get(0), list.get(1)......);

有人能告诉我怎么做吗?

您可以将单个项目或项目数组传递给这样的varargs方法。使用以下命令将列表转换为数组以传入:

声明为

void X(Object... values){};
void X(Object[] values){};
类似于声明为

void X(Object... values){};
void X(Object[] values){};
和可以用
对象[]
调用,尽管只有第一个可以用可变数量的参数调用。您可以使用将列表转换为数组,以便调用
X(list.toArray())
。下面的示例代码演示:

导入java.util.array;
公共类VarargsExample{
公共静态void foo(对象…args){
System.out.println(“foo:+Arrays.toString(args));
}
公共静态空栏(对象[]参数){
System.out.println(“条:“+Arrays.toString(args));
}
公共静态void main(字符串[]args){
//只有foo可以用变量arity参数调用
foo(1,2,3);
//条(4,5,6);//无法编译
//这两种方法都可以用对象数组调用
foo(新对象[]{7,8,9});
bar(新对象[]{10,11,12});
//因此,这两个函数都可以用List#toArray结果调用
foo(Arrays.asList(13,14,15).toArray());
bar(Arrays.asList(16,17,18.toArray());
}
}
foo:[1,2,3]
傅:[7,8,9]
酒吧:[10、11、12]
傅:[13,14,15]
律师协会:[16、17、18]

查看
List#toArray(..)
。如果需要List.toArray()返回特定的对象类型,只需添加一小部分,如下操作:String[]a=List.toArray(新字符串[List.size()]);