提问人:AKJ 提问时间:4/5/2021 最后编辑:AKJ 更新时间:4/5/2021 访问量:449
Java toEquals() 覆盖以包含父类属性
Java toEquals() Override to include parent class attributes
问:
我正在尝试覆盖 pojo 的 toEquals 方法。但是,我不确定如何比较父类属性,因为 super() 向我抛出了一个错误。
我正在尝试这样的事情:
@Override
public boolean equals(Object o) {
return super.equals(o.super()); // it mentions that the abstract parent class is not an inner class
}
如何比较父抽象类字段是否相等?子属性可能相似,但父属性始终不同。
答:
0赞
Oleg Cherednik
4/5/2021
#1
@Override
public boolean equals(Object o) {
// compare local fields and return false if some of them are not equal
// if all fields are equal in the current class, then delegate work to the parent class.
// You should not care what it does, just call it and retrieve the result
return super.equals(o);
}
附言如果使用像 IDEA 这样的 IDE,则可以自动生成 equals()
和 hashCode()。
作为另一种选择,您可以使用 Project Lombok
。
评论
0赞
AKJ
4/5/2021
这难道不是将“this”对象的父类与“that”对象o的子类进行比较吗?
0赞
AKJ
4/5/2021
我将 IDE 的 generate 函数用于 equals 和 hashCode 方法。但是,equals 只比较属于子类的属性,而不比较属于其抽象父类的属性
评论
o
obj.super()
super.equals(...)