在下面的代碼中,我期望equals()
返回true
,但它不會。我在這裏錯過了什麼?SparseBooleanArray.equals()未按預期工作
SparseBooleanArray array_0 = new SparseBooleanArray();
array_0.put(0, true);
array_0.put(2, true);
SparseBooleanArray array_1 = new SparseBooleanArray();
array_1.put(0, true);
array_1.put(2, true);
boolean isEqual = array_0.equals(array_1); // is false instead of true
看在調試器都陣列,他們似乎同樣給我(他們有不同的shadow$_monitor_
價值,但我不知道那是什麼應該是)。 toString()
方法也返回相同的字符串。
我想寫一個函數的單元測試,將EnumSet
轉換爲SparseBooleanArray
,但我無法手動創建相同的數組以將其與函數的返回值進行比較。
編輯
我還要提到的是hasCode()
返回的值不同,以及,這不應該的基礎上,documentation。
這很奇怪。我可以重現你的發現,但源代碼看起來應該匹配... – CommonsWare
你在測試它的哪個版本的android? – Blackbelt
@Blackbelt在Android 6.0 API 23 - x86_64仿真器 – rozina