为什么Groovy闭包声明了一个最大值,而不是一定数量的参数

noa*_*amt 5 groovy closures

在声明闭包时,我们可以使用以下方法查询接受参数的数量:

Closure#getMaximumNumberOfParameters()
Run Code Online (Sandbox Code Playgroud)

例如:

def closure = { String param ->
}
println(closure.maximumNumberOfParameters)
Run Code Online (Sandbox Code Playgroud)

将输出:

1
Run Code Online (Sandbox Code Playgroud)

为什么该方法将参数数量声明为最大值而不是常量?

在什么情况下,此方法的返回值与闭包中声明的实际参数数量不同?

tim*_*tes 4

默认参数?

def closure = { String param = 'something' ->
}
Run Code Online (Sandbox Code Playgroud)

所以你可以从技术上调用

closure()
Run Code Online (Sandbox Code Playgroud)

closure('something else')
Run Code Online (Sandbox Code Playgroud)