我有一个带有 getter 的类,它返回其私有字段 List。
Class MyClass {
private List<String> myList;
public List<String> getMyList(){
return myList;
}
}
但是 getter 方法的调用者不能在该列表中添加或删除元素。
MyClass instance = new MyClass();
List<String> hisList = instance.getMyList();
hisList.add("new element");
引发了 UnsupportedOperationException。
我知道 getter 返回对该列表的引用,但为什么该列表在调用方是只读的?注意我没有在 getter 中返回 Collections.unmodifiableList() 。
更新:
抱歉,我通过 Arrays.asList 创建了一个固定大小的列表,这就是为什么 ;)