我有一个像这样的java类:
class MyClass {
MyClass(Object obj) {
m_Obj = obj
}
private Object m_Obj;
}
因为m_Obj可以为null,所以我的equals方法必须看起来像这样:
@Override
public boolean equals(
Object obj) {
if (!(obj instanceof MyObject))
return false;
MyObject other = (MyObject)obj;
if ((m_Obj == null) &&
(other.m_Obj == null)
return true;
if ((m_Obj == null) &&
(other.m_Obj != null)
return false;
if ((m_Obj != null) &&
(other.m_Obj == null)
return false;
return m_Obj.equals(other.m_Obj);
}
当我有多个可能为null或不为null的类成员时,equals函数将变成很长的口号。我可以编写自己的函数:
public boolean equals(
Object a,
Object b) {
if ((a == null) &&
(b == null)
return true;
if ((a == null) &&
(b != null)
return false;
if ((a != null) &&
(b == null)
return false;
return a.equals(b);
}
我想知道是否有人已经在java / apache库之一中做到了这一点?
是的,因为Java SE 7对此有一个标准的API:Objects.equals
@Override
public boolean equals(Object obj) {
if (obj == this){
return true;
}
if (!(obj instanceof MyObject))
return false;
MyObject other = (MyObject)obj;
return Objects.equals(m_ObjA, other.m_ObjA)
&& Objects.equals(m_ObjB, other.m_ObjB)
&& (myPrimitive == other.myPrimitive);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句