Java等价于.NET object.Equals(object,object)

时间:2011-04-06 12:21:27

标签: java equals equality

在.NET中System.Object定义了一个静态方法

bool Equals(object a, object b);

a.Equals(b)可能为a的情况下,这是null的有用替代方案。如果ab都是null,它也会返回true。

我无法在Java的框架中找到一个等效的方法(我的Java现在有点生疏了。)我能说的最简洁的代码是:

(a==null && b==null) || (a!=null && a.Equals(b))

这种方法存在吗?

注意我不想依赖任何外部框架。我只是好奇这个简单的方法是否存在于核心Java类库中。

3 个答案:

答案 0 :(得分:4)

我认为你想要的是ObjectUtils.equals

 ObjectUtils.equals(null, null)                  = true
 ObjectUtils.equals(null, "")                    = false
 ObjectUtils.equals("", null)                    = false
 ObjectUtils.equals("", "")                      = true
 ObjectUtils.equals(Boolean.TRUE, null)          = false
 ObjectUtils.equals(Boolean.TRUE, "true")        = false
 ObjectUtils.equals(Boolean.TRUE, Boolean.TRUE)  = true
 ObjectUtils.equals(Boolean.TRUE, Boolean.FALSE) = false

如果您有兴趣,这是图书馆的代码......

public static boolean equals(Object object1, Object object2) {
    if (object1 == object2) {
        return true;
    }
    if ((object1 == null) || (object2 == null)) {
        return false;
    }
    return object1.equals(object2);
}

答案 1 :(得分:2)

目前,这在核心库中不存在,但它是Java 1.7中添加的改进之一。

在Java 1.7中,您可以使用Objects.equals(Object a, Object b)。在此之前,如果您不想添加外部依赖项,我建议您自己实现它。

source

答案 2 :(得分:1)

ObjectUtils中的

Apache Common提供了method