void method(String[] a)
和void method(String... a)
之间的区别是什么?
第一种方法采用字符串数组,其中第二种方法采用一个或多个String参数。它们提供了哪些不同的功能?
此外,不知道为什么但这有效:
public class Test {
public static void main(String[] args) {
String[] a = {"Hello", "World"};
Test t = new Test();
t.method(a);
}
void method(String...args) {
System.out.println("Varargs"); // prints Varargs
}
}
答案 0 :(得分:6)
没有区别,只有签名后面还有其他元素。
例如:
user
是可能的,因为jvm无法认为args
仍然是public void method(String ... args, String user){}
的元素。
{{1}}但是,
会造成麻烦。
答案 1 :(得分:2)
唯一的区别是当你调用方法时,调用它作为varargs的可能方法允许多个字符串由","分隔。或者使用数组作为参数。
重要提示:
varargs功能可自动化并隐藏多个args的过程 传入一个阵列。
编辑:
Java不允许这样public void method(String ... args, String user)
因为varargs
必须是要调用的最后一个参数。
答案 2 :(得分:0)
不好,但有时非常有用: 如果在编写代码时,您不知道您的方法获得哪些args作为输入,您的代码看起来像
public class Test {
public static void main(String[] args) {
Test t = new Test();
String[] a = {"Hello", "World"};
Integer [] b = {1,2};
t.method(a);
t.method(b);
t.method('a',1,"String",2.3);
}
void method(Object...args) {
for (Object arg : args){
System.out.println(arg);
}
}
}