出於某種原因,我已經能夠在AbstractList的擴展上執行removeAll。方法沒有拋出UnsupportedOperationException,儘管它應該
特別是那個列表是一個java.util.Arrays.Arraylist(它不是java.util.ArrayList),它是不支持remove或add的AbstractList的擴展。
更改以下行
Set<String> defaultList = new HashSet<>(Arrays.asList(getDefaultNames()));
Set<String> names = new HashSet<>(_adapter.getContainerNames());
defaultList.removeAll(names);
要
List<String> defaultList = Arrays.asList(getDefaultNames());
List<String> names = _adapter.getContainerNames();
defaultList.removeAll(names);
後,我能夠編譯代碼,執行它,看看在排序順序列表,甚至完全在卸載應用程序之後。
吃回來,刪除所有斷點後(我有一個斷點在每一行),和新舊版本之間切換了幾次(檢查出的git每個版本,編譯和安裝)而不是有排序的列表,我得到了一個UnsupportedOperationException。
現在我從android.jar.java.util.Arrays開放源代碼中可見的實現中發現,這應該從未執行過。
我很困惑,我猜這是某種緩存錯誤,或者由於可能沒有建立乾淨的,但怎麼會發生這樣的事情呢?
這是預期和可能重現的嗎?
我怎樣才能避免在將來呢?我每次都必須建立清潔嗎?
斷點是否阻止了該代碼正確構建乾淨?