Java 覆盖客户对象上的.equals()

Java 覆盖客户对象上的.equals(),java,overriding,equals,Java,Overriding,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,并想检查当前对象是否等于通过Id(getId)传入参数的对象。我该怎么做?谢谢

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

@Override
public boolean equals(Object o) {
    if (! (o instanceof MyClass)) return false;
    return id == ((MyClass)o).getId();
}
其中,
id
是您的数据字段(可能是
int
),而
MyClass
是您的类的名称


请注意:如果您重写
等于
,强烈建议您也重写。如果<代码> id 确实是一个整数,那么您可以考虑使用<代码> hash码< /C> >返回<代码> id < /> > .< /p> 您需要检查传入对象的类型和“空”。您还应该检查
this.id
是否为空,以便彻底检查。您可能还需要重写
对象.hashCode()
,以便
设置
映射
能够正常工作

@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();
}

请展示您的代码示例。通常,
equals
应比较两个对象的相关成员以确定相等性。如果您不确定,一个好的替代方法是让您的IDE为您执行此操作。在定义“相等”的含义之前,您无法执行此操作。你的意思是只有ID是相等的,而不考虑任何其他成员?您想要“deepequal”吗?它递归地比较所有数据成员及其成员?只有一些?没有更多的信息,就无法回答这个问题。