我无法在任何地方找到答案。即使这个问题很难说,所以让我问一下代码:
在Ruby中我们可以这样做(为Cucumber编写的步骤定义):
When (/foo/) do |*table|
" splat"表示获取表格是可选的。
我们怎样才能用Java做到这一点?除了重载方法:
@When ("foo")
public void overloadedMethod(){ code }
public void overloadedMethod(table){ code }
重载方法是实现相同结果的唯一方法吗?
答案 0 :(得分:0)
在Ruby中,星号语法(*table
)不仅仅意味着参数是可选的,而且任何参数都是在一个可以在方法中访问的数组中收集的(或者在这种情况下是块)身体。这可能包括零参数,这会给你一个空数组。
Java与varargs具有类似的功能:
public void myMethod(AType... things) {
// things is an array of AType objects
}
然后,您可以通过以下任一方式调用此方法(假设foo
,bar
和baz
都是对AType
类型对象的引用:
myMethod(foo);
myMethod(foo, bar, baz);
myMethod();