Java中的String ...参数

Des*_*nks 17 java syntax arguments

我必须为家庭作业分配实现一个API,我的教师使用了一个我不熟悉的符号来表示API中的一个方法(基于javadoc).

public void method(String... strs);
Run Code Online (Sandbox Code Playgroud)

"......"是什么意思?后来看起来我需要使用单个字符串实际参数调用这个相同的方法,以及多个字符串实际参数...

Java没有可选参数(据我所知),所以我在这里有点困惑......

dag*_*gge 32

它被称为varargs; http://docs.oracle.com/javase/6/docs/technotes/guides/language/varargs.html

这意味着您可以向该方法传递任意数量的参数(甚至为零).

在该方法中,参数将自动放入指定类型的数组中,用于访问各个参数.


Bri*_*ach 6

它被称为省略号,它意味着该方法可以将String多个s作为其参数.

请参阅:有关在Oracle网站上传递参数的Java教程.


Joh*_*dep 5

是的,这意味着您可以将任意数量的字符串作为此方法的参数.

对于你的方法:

public void method(String... strs); 
Run Code Online (Sandbox Code Playgroud)

您可以将其命名为:

method(str)
method(str1, str2)
method(str1,str2,str3)
Run Code Online (Sandbox Code Playgroud)

任何没有任何遗嘱都可行.在其他世界中,它取代了:

 public void method(String[] str); 
Run Code Online (Sandbox Code Playgroud)