2013-05-21 159 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()); 

我覺得這是更好地做這樣的,但是這取決於你在做什麼,你可能要構建新的列表吸氣劑。這也有助於隱藏類型。