W poniższym kodzie spodziewam się, że equals()
zwróci true
, ale tak się nie stanie. Czego tu mi brakuje?SparseBooleanArray.equals() nie działa zgodnie z oczekiwaniami
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
Patrząc zarówno na tablicy w debugger, wydają się tak samo do mnie (mają inną wartość shadow$_monitor_
, ale nie mam pojęcia, co to ma być). Metoda toString()
zwraca ten sam ciąg również dla obu.
Próbuję napisać test jednostkowy dla funkcji, która konwertuje EnumSet
na SparseBooleanArray
, ale nie mogę ręcznie utworzyć tej samej tablicy, aby porównać ją z wartością zwracaną przez funkcję.
Edit
Należy również wspomnieć, że hasCode()
zwraca różne wartości, a także, co nie powinno, na podstawie documentation.
To jest bardzo dziwne. Mogę odtworzyć twoje odkrycia, ale kod źródłowy wygląda tak, jakby pasowały ... – CommonsWare
na której wersji Androida testujesz? – Blackbelt
@Blackbelt Na Androidzie 6.0 API 23 - emulator x86_64 – rozina