我有两个对象Object1
和Object2
,它们可能为空,也可能不为空。
我想测试它们之间的null安全相等(如果两者都为null,则两者相等)
我完成了我的研究并找到了Objects.equals(Object1,Object2)
,它实现了它的目的。
但问题是它仅适用于API级别19+。 如何使这与较小的API兼容?
答案 0 :(得分:6)
有几种选择。
你可以覆盖
您要比较的班级中的equals()
方法,并使用obj1.equals(obj2)
您可以使用对象的hashCode()
方法,通过obj1.hashCode() == obj2.hashCode()
仅使用普通旧==
确定天气两个变量包含同一个类的实例。
如果这些不安全,您可以使用obj == null
轻松编写自己的空检查
这应该完全独立于Android Api。
答案 1 :(得分:0)
你试过番石榴吗? Guava有一些相当不错的功能,可以删除很多样板。 这是他们示例的link。
答案 2 :(得分:0)
这是一个简单的比较方法。但是,你必须自己动手,这似乎很奇怪。
/**
* Null safe comparison of two objects.
* @return true if the objects are identical.
*/
public static boolean objectEquals(Object o1, Object o2) {
if (o1 == null && o2 == null) return true;
if (o1 == null) return false;
return o1.equals(o2);
}