Я использую Apache Commons EqualsBuilder для создания метода equals для нестатического внутреннего класса Java. Например:
import org.apache.commons.lang.builder.EqualsBuilder;
public class Foo {
public class Bar {
private Bar() {}
public Foo getMyFoo() {
return Foo.this
}
private int myInt = 0;
public boolean equals(Object o) {
if (o == null || o.getClass() != getClass) return false;
Bar other = (Bar) o;
return new EqualsBuilder()
.append(getMyFoo(), other.getMyFoo())
.append(myInt, other.myInt)
.isEquals();
}
}
public Bar createBar(...) {
//sensible implementation
}
public Bar createOtherBar(...) {
//another implementation
}
public boolean equals(Object o) {
//sensible equals implementation
}
}
Есть ли синтаксис, с помощью которого я могу ссылаться на ссылку other
Foo
, кроме объявления метода getMyFoo()
? Что-то вроде other.Foo.this
(что не работает)?