2013-05-21 162 views
2

这是关于由另一个类实例变量返回的ArrayList的用法。Java对象参考

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(""); 
    } 

} 

时,我retreive列表和操作参考的list.Because测试类,A类名单还得到了manipulated.If A是第三方code.How的一部分做我纠正我的代码测试类以便原始对象不会受到影响?

+0

返回'newAl'的副本? – asgs

+0

您需要在发送之前克隆列表。 –

+0

或发送后,取决于实际是什么。 – gsingh2011

回答

2

ArrayList constructor需要收藏,您就可以使用:

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

我觉得这是更好地做这样的,但是这取决于你在做什么,你可能要构建新的列表吸气剂。这也有助于隐藏类型。