客户对象上的override.equals()



我想在自定义对象上重写equals,并想检查当前对象是否等于Id(getId)在参数中传递的对象。我该怎么做?感谢

仅凭您提供的信息很难给出答案。但你想要的大致是这样的东西:

@Override
public boolean equals(Object o) {
if (! (o instanceof MyClass)) return false;
return id == ((MyClass)o).getId();
}

其中id是数据字段(可能是int),MyClass是类的名称。

注意:如果您覆盖equals,强烈建议您也覆盖hashCode。如果id确实是一个整数,那么您可以考虑让hashCode只返回id

您需要检查传入对象的类型和"null度"。您还应该检查this.id是否为null,以便进行彻底检查。您可能还希望覆盖Object.hashCode(),以便SetMap能够像您希望的那样工作。

@Override
public boolean equals(Object obj) {
if ((obj == null) || (!getClass().isAssignableFrom(obj.getClass()))) {
return false;
} 
if (this.id == null) {
return false;
} else {
return this.id.equals((ClassName)obj.getId());
}
}
@Override
public int hashCode() {
return this.id.hashCode();
}

最新更新