一系列字符串与字符串Varargs
void method(String[] a)
和void method(String... a)
什么区别?
第一种方法采用字符串数组,其中第二种方法采用一个或多个String参数。 它们提供了哪些不同的function?
此外,不知道为什么,但这是有效的:
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 } }
只有在签名中有其他元素后才会有区别。
例如:
public void method(String[] args, String user){}
是可能的,因为jvm无法认为user
仍然是args
的元素。
public void method(String ... args, String user){}
但是会引起麻烦。
唯一的区别是当你调用方法时,调用它的可能方法是varargs允许多个字符串用“,”分隔,或者使用数组作为参数。
重要的提示:
varargsfunction可自动化并隐藏数组中传递的多个args的过程。
文档。
编辑:Java不允许使用此public void method(String ... args, String user)
因为varargs
必须是要调用的最后一个参数。
不好,但有时非常有用:如果在编写代码时你不知道你的方法得到哪个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); } }
}