可选的Java操作数,如Ruby' s | * food |用于步骤定义

时间:2014-06-09 21:11:45

标签: java ruby cucumber

我无法在任何地方找到答案。即使这个问题很难说,所以让我问一下代码:

在Ruby中我们可以这样做(为Cucumber编写的步骤定义):

When (/foo/) do |*table|

" splat"表示获取表格是可选的。

我们怎样才能用Java做到这一点?除了重载方法:

@When ("foo")    
public void overloadedMethod(){ code }
public void overloadedMethod(table){ code }

重载方法是实现相同结果的唯一方法吗?

1 个答案:

答案 0 :(得分:0)

在Ruby中,星号语法(*table)不仅仅意味着参数是可选的,而且任何参数都是在一个可以在方法中访问的数组中收集的(或者在这种情况下是块)身体。这可能包括零参数,这会给你一个空数组。

Java与varargs具有类似的功能:

public void myMethod(AType... things) {
  // things is an array of AType objects
}

然后,您可以通过以下任一方式调用此方法(假设foobarbaz都是对AType类型对象的引用:

myMethod(foo);

myMethod(foo, bar, baz);

myMethod();