我的問題是,回收tempList2 arraylist對象是否正確?
我不太清楚「回收」是什麼意思。這似乎並不是應用程序爲了避免分配新對象而回收對象的情況。 (這是Java中「回收」的正常含義。)
如果getXYZ
被多次調用同一個tempList2
對象,那麼這只是一種將東西聚合成單個列表的方法。 getXYZ
返回ArrayList
的事實使得方法實現可能被更改爲返回不同的實例的可能性。這不是問題本身,但它可能是如果調用方沒有適當地分配調用結果。
如果getXYZ
只針對任何給定的tempList2
對象調用一次,那麼這看起來有點奇怪。
總之,這段代碼看起來有點可疑,而且如果有人改變了getXYZ
的實現,它是脆弱的。然而,這並不是錯誤的,並且這樣做可能有一些很好的理由(或者歷史原因),這在你提到的問題的小塊代碼中並不明顯。
編輯 - 迴應此評論(內聯,使其可讀)
實際上,上面的代碼的原因是,我想避免創建兩個數組列表對象。對於例如:傳統的方法是
ArrayList tempList2 = new ArrayList();
tempList2 = getXYZ(tempList1);
//method getXYZ
getXYZ(ArrayList tempList1) {
ArrayList tempList = new ArrayList();
//INSTANTIATED ONLY ONCE
//does some logic and adds objects into tempList
return tempList;
}
這樣做的真正傳統的方法是:
ArrayList tempList2 = getXYZ(tempList1);
或
ArrayList tempList2;
// some intermediate lines
tempList2 = getXYZ(tempList1);
這些都不需要創建不必要的ArrayList
您的方法的實例,並且都不要求將實例傳遞給getXYZ
方法。
其實,上面的代碼的原因是,我想避免創建兩個arraylist對象。例如:傳統的方法是 ArrayList tempList2 = new ArrayList(); tempList2 = getXYZ(tempList1); //方法getXYZ getXYZ(ArrayList tempList1){ ArrayList tempList = new ArrayList(); // INSTANTIATED ONLY ONCE //執行一些邏輯並將對象添加到tempList中 return tempList; } – user366930 2010-06-15 06:35:54