我正在学习《Java SE 7程序员I和II学习指南》,但我不理解下面的解释。
哪些代码会破坏封装?答案是:第9行。"当封装一个可变对象(如ArrayList)时,getter方法必须返回该对象的副本引用,而不仅仅是原始对象的引用。"
我既不理解这个解释,也不知道如何修改原始代码。
因此,在getList()中,需要返回一个新的ArrayList实例,而不是原始实例的引用。
class Fortress{
private String name;
private ArrayList<Integer> list;
Fortress() {list=new ArrayList<Integer>;
String getName{return name;}
void addToList(int x){list.add(x);}
ArrayList getList(){return list;} // line 1
}
哪些代码会破坏封装?答案是:第9行。"当封装一个可变对象(如ArrayList)时,getter方法必须返回该对象的副本引用,而不仅仅是原始对象的引用。"
我既不理解这个解释,也不知道如何修改原始代码。
因此,在getList()中,需要返回一个新的ArrayList实例,而不是原始实例的引用。
return list;
我们应该这样做吗?
ArrayList<Integer> list2=list;
return list2;