在.NET中System.Object
定义了一个静态方法
bool Equals(object a, object b);
在a.Equals(b)
可能为a
的情况下,这是null
的有用替代方案。如果a
和b
都是null
,它也会返回true。
我无法在Java的框架中找到一个等效的方法(我的Java现在有点生疏了。)我能说的最简洁的代码是:
(a==null && b==null) || (a!=null && a.Equals(b))
这种方法存在吗?
注意我不想依赖任何外部框架。我只是好奇这个简单的方法是否存在于核心Java类库中。
答案 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)
。在此之前,如果您不想添加外部依赖项,我建议您自己实现它。
答案 2 :(得分:1)