可选的Java操作数,如Ruby';s |*foo |用于阶跃定义
我在任何地方都找不到答案。甚至这个问题也很难用语言表达,所以让我用代码提问: 在Ruby中,我们可以这样做(为Cucumber编写的步骤定义): “splat”表示获取表是可选的 我们如何在Java中做到这一点?除了重载方法之外:可选的Java操作数,如Ruby';s |*foo |用于阶跃定义,java,ruby,cucumber,Java,Ruby,Cucumber,我在任何地方都找不到答案。甚至这个问题也很难用语言表达,所以让我用代码提问: 在Ruby中,我们可以这样做(为Cucumber编写的步骤定义): “splat”表示获取表是可选的 我们如何在Java中做到这一点?除了重载方法之外: @When ("foo") public void overloadedMethod(){ code } public void overloadedMethod(table){ code } 重载方法是获得相同结果的唯一方法吗?在Ruby中,星号语法(*t
@When ("foo")
public void overloadedMethod(){ code }
public void overloadedMethod(table){ code }
重载方法是获得相同结果的唯一方法吗?在Ruby中,星号语法(
*table
)不仅意味着参数是可选的,而且意味着所有参数都收集在一个数组中,您可以在方法体(本例中为块)中访问。这可能包括零个参数,这将为您提供一个空数组
Java具有类似的功能,包括:
然后,您可以通过以下任一方式调用此方法(假设foo
,bar
和baz
都是对类型为AType
的对象的引用):
myMethod(foo);
myMethod(foo, bar, baz);
myMethod();
从现在起,使用单词
splat
。splat运算符用于处理具有可变参数列表的方法
public void myMethod(AType... things) {
// things is an array of AType objects
}
myMethod(foo);
myMethod(foo, bar, baz);
myMethod();