2

这是关于另一个类实例变量返回的 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 列表也被操作。如果 A 是第三方代码的一部分。如何更正测试类中的代码,以便原始对象不会受到影响?

4

1 回答 1

2

ArrayList 构造函数接受一个 Collection ,因此您可以使用它:

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

我认为这样做会更好,但是根据您在做什么,您可能希望在 getter 中构造新的 List 。这也有助于类型隐藏。

于 2013-05-21T05:10:34.783 回答