groovy:如何在groovy中简化/重写此方法

时间:2010-02-26 23:39:05

标签: groovy

protected int xMethod (Integer a, Integer b) {
  if (a<b)
    return 1
  else if (a>b)
    return 2
  else
    return 3
}

我想知道在groovy中是否有某种方法可以不同地重写上述方法?因为现在非常Java风格。

4 个答案:

答案 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