在另一个equals()实现中使用String的equals()实现?

时间:2013-08-30 20:10:43

标签: java equals

假设class Member成员的Id类型为String。我想知道在另一个实现中使用String equals()实现是否有任何问题。如果field Id的类型为Long,那会不会更好。

@Override public boolean equals(Object object){
  if(object == null) return false;
    if(! (object instanceof Member)) return false;
    Member member= (Member) object;
    if(this.Id.equals(member.Id))  //<==My concern is here
        return true; 
    else 
        return false;
}

3 个答案:

答案 0 :(得分:1)

我看到的唯一问题是除了id之外你可能会有更多的班级成员,而equals实施会说true,即使两个实例差异很大但具有相同的{{1} }}。考虑到这一点,请确保一致id实施以避免不一致。

另一个想法是定义自定义比较器,例如

hashCode

答案 1 :(得分:0)

完全没问题。从这个角度来看,将Id保留为String。如果它只包含数字,是的,您可以使用LongBigInteger(我的偏好)。但这是一种不同的动物。

答案 2 :(得分:0)

试试这个

@Override public boolean equals(Object object){
  if(object == null) return false;
  if(! (object instanceof Member)) return false;
  Member member= (Member) object;
  if (this.Id == null && member.Id == null)
      return true;
  else if (this.Id != null && member.Id != null)
      return this.Id.equals(member.Id);
  else
      return false;
}