我有兩個對象Object1
和Object2
,它們可能也可能不爲null。 我想測試它們之間的null安全平等(如果兩者都爲null,或者兩者均爲true) 我已經完成了我的研究並找到了Objects.equals(Object1,Object2)
,它實現了它的目的。Android:空安全等於API v19之前
但問題是,它只適用於API級別19+。 如何使這與較小的API兼容?
我有兩個對象Object1
和Object2
,它們可能也可能不爲null。 我想測試它們之間的null安全平等(如果兩者都爲null,或者兩者均爲true) 我已經完成了我的研究並找到了Objects.equals(Object1,Object2)
,它實現了它的目的。Android:空安全等於API v19之前
但問題是,它只適用於API級別19+。 如何使這與較小的API兼容?
有幾種選擇。
你可以重寫你是比較類的 equals()
方法,並使用通過obj1.hashCode() == obj2.hashCode()
obj1.equals(obj2)
您可以使用對象的hashCode()
方法,以確定它們是否是等價的,
只使用普通老==
確定天氣兩個變量包含一個類的相同實例。
如果這些都不是空安全的,你可以很容易地編寫自己的空與obj == null
此檢查應該是完全獨立的Android API的。
您嘗試過番石榴嗎? 番石榴有一些相當不錯的功能,可以去除很多樣板。 這是他們示例的link。
這裏是一個簡單的比較方法。雖然你不得不推出自己的產品,這似乎很奇怪。
/**
* 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);
}
+1用於編寫自己的方法。 Object.equals(...)'沒有背後的魔力。 Android是開源的,所以根據你自己代碼的許可證,你可能只能將該方法複製到你自己的實用程序類中。 – 2014-09-03 04:39:12