假设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;
}
答案 0 :(得分:1)
我看到的唯一问题是除了id
之外你可能会有更多的班级成员,而equals
实施会说true
,即使两个实例差异很大但具有相同的{{1} }}。考虑到这一点,请确保一致id
实施以避免不一致。
另一个想法是定义自定义比较器,例如
hashCode
答案 1 :(得分:0)
完全没问题。从这个角度来看,将Id
保留为String
。如果它只包含数字,是的,您可以使用Long
或BigInteger
(我的偏好)。但这是一种不同的动物。
答案 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;
}