在Groovy中覆盖比较运算符

3

我想在Groovy中覆盖 >= 运算符,找到了这个页面,但我还不确定如何操作。 我有一个名为Banknote的类,具有序列和金额属性,我希望根据金额属性来实现比较。


您想识别 >= 吗?还是希望拦截 <> 等符号? - Will
我不需要拦截特定的运算符,因此覆盖所有比较运算符就可以了。 - Dan
1个回答

7

您不需要覆盖>=运算符,而是实现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

如何看待以下代码: int compareTo(def o) {val <=> o.val }? - Dan
1
@Dan,参数中不需要使用 defint compareTo(o) {val <=> o.val } =D - epidemian
@Dan 当然可以,这取决于您想要返回什么类型的错误。如果我正在比较特定的类,则通常更喜欢使用类转换问题,否则我会与接口进行比较,但这通常是个人偏好的问题。 - Dave Newton

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接