一系列字符串与字符串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); } } 

}