使用空值检查来比较两个对象

2022-09-01 00:18:09

JDK 中是否有一种方法可以比较两个对象的相等性,并考虑空值?像这样:

public static boolean equals(Object o1, Object o2)
{
    if (o1 == null)
    {
        return o2 == null; // Two nulls are considered equal
    }
    else if (o2 == null)
    {
        return false;
    }

    return o1.equals(o2);
}

自己写这个方法似乎很愚蠢,因为我认为它必须已经存在于某个地方。


答案 1

Java 7.0 添加了一个新的方便类:对象

它有一个确切的方法:Objects.equals(对象a,对象b)


答案 2

Apache Commons Lang有这样一个方法:ObjectUtils.equals(object1, object2)。你不想要在这样的方法上使用泛型,它会导致虚假的编译错误,至少在一般情况下是这样。Equals非常清楚(或者应该 - 它是契约的一部分)检查对象的类并返回false,因此它不需要任何额外的类型安全性。


推荐