Java对象引用

时间:2013-05-21 05:05:28

标签: 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() {
        List < String > list = a.getList();
        list.add("");
    }

}

在Test类中,当我检索列表并操作列表时。由于引用,类A列表也被操纵。如果A是第三方代码的一部分。如何在Test类中更正我的代码以便原始对象不会受到影响吗?

1 个答案:

答案 0 :(得分:2)

ArrayList constructor收集了一个集合,因此你可以使用它:

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

我认为最好这样做,但是根据你正在做的事情,你可能想要在getter中构建新的List。这也有助于隐藏类型。