Groovy参数";“字符串…”;

Groovy参数";“字符串…”;,groovy,Groovy,我正在为一个web应用程序实现单元测试,我遇到了这段代码(和其他一些代码),其中有一个参数“String…”我不确定“…”是什么意思,如果有的话,因为我在任何地方都找不到任何解释 public static List<User> getUsersForGroups(String... dns) { Set<String> members = getMembers(dns) return members.collect{ getUser(it) }.find

我正在为一个web应用程序实现单元测试,我遇到了这段代码(和其他一些代码),其中有一个参数“String…”我不确定“…”是什么意思,如果有的话,因为我在任何地方都找不到任何解释

public static List<User> getUsersForGroups(String... dns) {
    Set<String> members = getMembers(dns)
    return members.collect{ getUser(it) }.findAll{ it }.sort{ User u -> "$u.lastName  $u.firstName"}
}
公共静态列表getUsersForGroups(字符串…dns){
Set members=getMembers(dns)
return members.collect{getUser(it)}.findAll{it}.sort{User u->“$u.lastName$u.firstName”}
}

这是一个名为的Java功能。它允许方法接受多个参数,而无需调用方首先将它们打包到数据结构中。参数在传递到方法之前绑定到数组中:

groovy:000> def foo(String... stuff) {
groovy:001>   println(stuff.class)
groovy:002>   for (s in stuff) {
groovy:003>     println(s)
groovy:004>   }}
===> true
groovy:000> foo('a','b','c','d')
class [Ljava.lang.String;
a
b
c
d
===> null
groovy:000> foo('q')
class [Ljava.lang.String;
q
===> null

class[Ljava.lang.String;
表示它是一个数组(与
java.util.ArrayList
相反)。

与java中相同,它是一个varargs。只需补充一下答案:String…在java中可用于方法,表示String[]在Groovy中,字符串[]作为最后一个参数(varargs的唯一有效位置)始终作为varargs处理,因此在Groovy中,字符串…只是字符串[]的别名