Java对象引用
这与另一个类实例变量返回的ArrayList的使用有关Java对象引用,java,object,collections,arraylist,Java,Object,Collections,Arraylist,这与另一个类实例变量返回的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()
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("");
}
}
A类{
//为其分配了字符串列表。
私有列表newAl;
//返回列表
公共列表getList(){
返回newA1;
}
}
课堂测试{
公开作废go(){
ListList=a.getList();
列表。添加(“”);
}
}
在测试类中,当我检索列表并操纵列表时。由于引用,类A列表也被操纵。如果A是第三方代码的一部分。如何在测试类中更正代码,使原始对象不受影响?获取一个集合,以便您可以使用该集合:
List<String> list = new ArrayList(a.getList());
List List=newarraylist(a.getList());
我认为这样做更好,但是根据您正在做的事情,您可能希望在getter中构建新列表。这也有助于类型隐藏。返回一份
newAl
?您需要在发送前克隆列表。或在发送后克隆列表,具体取决于实际是什么。感谢您的回复。我只能操作测试类。