У меня есть следующий фрагмент кода Groovy, который пытается использовать перегрузку оператора для увеличения, уменьшения и равенства. Все это создает два экземпляра, выполняет приращение и уменьшение одного из экземпляров, а затем сравнивает два экземпляра, используя перегруженные методы equals. Когда я делаю сравнение, оно терпит неудачу. Оба должны быть 100, когда этот код завершится. (операторы печати показывают это, но одна из функций toString() кажется неправильной). Что я здесь делаю неправильно?
Это с groovy 1.8.6
class Overload {
def value
public Overload(value = 0) {
this.value = value
}
def next() {
value = value + 1;
}
def previous() {
value = value - 1;
}
def boolean equals(other) {
if (value == other?.value) {
return true
}
return false
}
def String toString() {
"value is = ${value}"
}
}
def cls1 = new Overload(100)
def cls2 = new Overload(100)
cls1++
cls1--
if (cls1 == cls2) {
println("cls1 == cls2")
}
else {
println("cls1 != cls2")
}
println(cls1.toString())
println(cls2.toString())
Выход:
cls1 != cls2
100
value is = 100