【发布时间】:2011-02-25 16:12:22
【问题描述】:
我有一个带有 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 创建了一个固定大小的列表,这就是为什么 ;)
【问题讨论】:
-
一切看起来都正确...是否缺少代码?我没有看到列表初始化任何地方......
-
我们没有回答您的问题所需的代码。您还没有向我们展示 myList 是如何被实例化的。如果我运行你提供给我们的代码,我会得到一个 NullPointerException。
-
初始化代码和堆栈跟踪的前几行。
标签: java getter-setter