2013-08-23 45 views
0

請注意:我已經閱讀了一些當我們定義類級別變量的地方:List或Map。它們應該總是用new運算符初始化:例如 - private List students = new ArrayList();但是架構師反對並告訴我,在初始化類變量時會消耗10個桶。 但是,我非常反對它:在使用它之前檢查學生列表爲空。java最佳實踐初始化數組列表映射定義

請指教我最佳做法;我應該在課程級別初始化數組列表嗎?

請指教。如果您有任何更好的參考網址或Java編碼練習的書名,請提供給我。

+0

沒有絕對正確或錯誤的答案;這取決於你如何使用你的班級。它多久實例化一次?這個'List'總是被訪問,或者很少?默認的答案是儘可能簡化代碼並使用聲明進行初始化,直到您有明確證據表明它存在內存或性能問題。 – chrylis

+0

另一個考慮:你可能希望能夠區分你的邏輯和「班外沒有任何東西已經初始化這個列表」和「這個列表是空的」。 – Michelle

回答

1

您的問題沒有足夠的信息來作出最終的裁決。

如果您的整個程序都有無數的列表和映射變量,但是每個特定的運行只使用其中的幾個,那麼就有一種延遲初始化的情況。然而,這在實踐中非常罕見。

就個人而言,我總是更喜歡private final變量來容納容器類型的對象(列表,地圖,集合)。清晰的代碼,沒有錯誤,更少的冗餘檢查(如您注意的),線程安全的(至少就發佈而言)。

延遲初始化有很多缺陷,並且缺乏針對它的良好論點,所以建議最好的做法是急切的初始化。