Я изучал «Java SE 7 Programmer I & II Study Guide», и я не понял объяснений ниже.Инкапсуляция для изменяемых объектов в Java
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, ваш получатель должен возвращать ссылку на копию объекта, а не только ссылку на исходный объект».
Я не понял ни объяснения, ни способы модификации исходного кода.
Таким образом, в GetList() вместо
return list;
Должны ли мы сделать это?
ArrayList<Integer> list2=list;
return list2;