本文介紹了不變的列表,但仍可以修改列表中的元素的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!
問題描述
我使用com.google.Common.Collection t.ImmuableList不允許對列表中的元素進行任何修改。代碼如下所示,但斷言失敗。
MyObj未重寫克隆方法,這是它失敗的原因嗎?
MyObj myObj = new MyObj();
myObj.setName("foo");
Collection<MyObj> sets = new HashSet<MyObj>();
sets.add(myObj);
ImmutableCollection<MyObj> immutableSets = ImmutableList.copyOf(sets);
for(MyObj obj : immutableSets){
obj.setName("var");
}
assertTrue(myObj.getName()=="foo");
推薦答案
您修改的是列表中的對象,而不是列表本身。
如果要避免此類修改,則不可變列表必須包含不可變對象。
這篇關于不變的列表,但仍可以修改列表中的元素的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,