2013-02-14 70 views
3

我想重写Groovy中的> =运算符,发现this页面,但我仍然不确定如何去做。我有一个班级钞票,包含物业系列和金额,我希望实现金额物业的比较基础。Groovy中最重要的比较运算符

+0

你想找出'> ='或者你也想拦截''<', '>并且这样? – Will 2013-02-14 18:59:28

+0

我不需要拦截特定的运算符,因此覆盖所有比较运算符都可以。 – Dan 2013-02-14 19:43:57

回答

5

你不重写>=运营商,要实现compareTo

class Foo implements Comparable { 
    int val 
    int compareTo(Object o) { return val <=> ((Foo) o).val } 
} 

f1 = new Foo(val: 5) 
f2 = new Foo(val: 10) 
println f1 <= f2 
=> true 
+0

如何: int compareTo(def o){val <=> o.val} ? – Dan 2013-02-14 19:49:07

+1

@丹,参数不需要'def':int compareTo(o){val <=> o.val}'= D – epidemian 2013-02-14 19:54:01

+0

@Dan当然,这取决于你想要找回哪种错误。如果我比较特定的类,我通常宁愿有类演员问题,否则我会比较一个界面,但它往往是一个偏好问题。 – 2013-02-14 19:54:08