我有一個項目列表,並填充它後,我想阻止任何可能發生的變化。我嘗試Collections.unmodifiableList
,但它阻止添加和刪除,但我仍然可以使用set。所以我鎖定了一個標準的解決方案,如使用Collections.unmodifiableList
。有沒有辦法阻止列表上的設置操作?
在此條件下有什麼想法?
我的代碼(代碼是用另一種語言,但我想這只是遵循的方法):
public SerFixo(List<? extends Caracteristica> caracteristicas) {
this.caracteristicas = Collections.unmodifiableList(new ArrayList<Caracteristica>(caracteristicas.size()));
setCaracteristicas(caracteristicas);
}
public final void setCaracteristica(Integer indice, Caracteristica caracteristica) {
this.caracteristicas.set(indice, caracteristica);
}
public final void setCaracteristicas(List<? extends Caracteristica> caracteristicas) {
for (int i = 0; i < caracteristicas.size(); i++) {
setCaracteristica(i, caracteristicas.get(i));
}
}
請發表您的代碼錯誤你讓其他人可以幫助你更好地 –
它僅僅是:列表= Collections.unmodifiableList(名單); – Victor
'Collections.unmodifiableList'不應該允許'set'操作。請張貼您的代碼;它似乎更有可能以某種方式錯誤地使用它。 –