这是关于另一个类实例变量返回的ArrayList的用法。
Class A {
//assigned list of string to it.
private List < String > newAl;
//returns the list
public List < String > getList() {
return newA1;
}
}
Class Test {
public void go() {
List < String > list = a.getList();
list.add("");
}
}
在Test类中,当我检索列表并操作列表时。由于引用,类A列表也被操纵。如果A是第三方代码的一部分。如何在Test类中更正我的代码以便原始对象不会受到影响吗?
答案 0 :(得分:2)
ArrayList constructor收集了一个集合,因此你可以使用它:
List<String> list = new ArrayList(a.getList());
我认为最好这样做,但是根据你正在做的事情,你可能想要在getter中构建新的List。这也有助于隐藏类型。