protected int xMethod (Integer a, Integer b) {
if (a<b)
return 1
else if (a>b)
return 2
else
return 3
}
我想知道在groovy中是否有某种方法可以不同地重写上述方法?因为现在非常Java风格。
答案 0 :(得分:2)
似乎函数只需返回3个不同的值,具体取决于a是小于,等于还是大于b。 Groovy中已经有一个运算符执行此操作:
a <=> b
返回值为-1,0和1.也许最好的做法是重构代码以使用此运算符而不是xMethod(如果可能的话)。
当然,如果精确值1,2和3很重要而不仅仅是3个不同的值,那么你就不能这样做。
答案 1 :(得分:1)
只是为了扩展Mark的答案:
protected int xMethod (Integer a, Integer b) {
switch ( a <=> b ) {
case -1: 1; break
case 1: 2; break
case 0: 3; break
}
}
但是,您必须质疑此方法是否具有任何值。如果可以将调用者更改为接受-1,0,1,则该方法没有理由存在。
答案 2 :(得分:0)
怎么样:
return (a <=> b) + 2
答案 3 :(得分:0)
如果从签名中删除两次出现的Integer,则可以使用&lt;的任何参数调用该方法。被定义为。
E.g。
断言x.xMethod(1,2)== 1
断言x.xMethod(“2”,“1”)== 2
断言x.xMethod(2.0,2.0)== 3