Java对象引用

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()

这与另一个类实例变量返回的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("");
    }

}
A类{
//为其分配了字符串列表。
私有列表newAl;
//返回列表
公共列表getList(){
返回newA1;
}
}
课堂测试{
公开作废go(){
ListList=a.getList();
列表。添加(“”);
}
}
在测试类中,当我检索列表并操纵列表时。由于引用,类A列表也被操纵。如果A是第三方代码的一部分。如何在测试类中更正代码,使原始对象不受影响?

获取一个集合,以便您可以使用该集合:

List<String> list = new ArrayList(a.getList());
List List=newarraylist(a.getList());

我认为这样做更好,但是根据您正在做的事情,您可能希望在getter中构建新列表。这也有助于类型隐藏。

返回一份
newAl
?您需要在发送前克隆列表。或在发送后克隆列表,具体取决于实际是什么。感谢您的回复。我只能操作测试类。