2014-09-03 49 views
1

我有兩個對象Object1Object2,它們可能也可能不爲null。 我想測試它們之間的null安全平等(如果兩者都爲null,或者兩者均爲true) 我已經完成了我的研究並找到了Objects.equals(Object1,Object2),它實現了它的目的。Android:空安全等於API v19之前

但問題是,它只適用於API級別19+。 如何使這與較小的API兼容?

回答

5

有幾種選擇。

  1. 你可以重寫你是比較類的 equals()方法,並使用通過obj1.hashCode() == obj2.hashCode()

  2. obj1.equals(obj2)

  3. 您可以使用對象的hashCode()方法,以確定它們是否是等價的,

  4. 只使用普通老==確定天氣兩個變量包含一個類的相同實例。

如果這些都不是空安全的,你可以很容易地編寫自己的空與obj == null

此檢查應該是完全獨立的Android API的。

+0

+1用於編寫自己的方法。 Object.equals(...)'沒有背後的魔力。 Android是開源的,所以根據你自己代碼的許可證,你可能只能將該方法複製到你自己的實用程序類中。 – 2014-09-03 04:39:12

0

您嘗試過番石榴嗎? 番石榴有一些相當不錯的功能,可以去除很多樣板。 這是他們示例的link

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); 
}