比较Java中两个可能为null的值

安迪

我有一个像这样的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库之一中做到了这一点?

uce

是的,因为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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章