我有一个带有getter的类,它返回其私有字段List。
Class MyClass {
private List<String> myList;
public List<String> getMyList(){
return myList;
}
}
但是getter方法的调用者不能添加或删除该List中的元素。
MyClass instance = new MyClass();
List<String> hisList = instance.getMyList();
hisList.add("new element");
抛出了UnsupportedOperationException。
我知道getter返回对该列表的引用,但为什么该列表在调用方只读?注意我没有在getter中返回Collections.unmodifiableList()。
更新
抱歉,我通过Arrays.asList创建了一个修复大小的列表,这就是为什么;)
答案 0 :(得分:4)
不,您尚未在unmodifiableList()
中调用getter
,但该列表已经不可修改为myList
引用。
如果你能提供一个简短但完整的例子(例如填充myList
的那个例子)会有所帮助:)
答案 1 :(得分:4)
您可能正在创建一个不可修改或常量的List,如下所示:
myList = Arrays.asList("a", "b", ...); // returns a fixed-size list
只是猜测而没有看到创建List的代码......