可选的 Java 操作数,如 Ruby 的 |*foo|用于阶跃反抗



我找不到这个问题的答案。甚至这个问题都很难表达,所以让我用代码来问:

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

When (/foo/) do |*table|

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

我们如何在Java中做到这一点?除了重载方法:

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

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

在Ruby中,星号语法(*table)不仅意味着参数是可选的,而且意味着任何参数都被收集在一个数组中,您可以在方法(或块)体中访问该数组。它可以包含零参数,这将给你一个空数组。

Java对变量也有类似的特性:

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

你可以用以下任何一种方式调用这个方法(假设foo, barbaz都是对AType类型对象的引用:

myMethod(foo);
myMethod(foo, bar, baz);
myMethod();

最新更新