參考 effective java 一書
- 創建和銷燬對象
1) 用靜態工廠方法代替構造器
優勢:靜態工廠方法有名稱
這是因爲構造器都是同名的,不同參數列表的構造器方法不能很直觀的區分出來不必在每次調用他們的時候都創建一個新對象
參考單例模式和享元模式可以返回原返回類型的任何子類型的對象
構造器指定的是某個具體的類,靜態方法可以是具有繼承關係的父子類創建參數化實例時,使代碼更加簡潔
缺點:類如果不含有公有的或者受保護的構造器,就不能被子類化 他們與其它的靜態方法實際上沒有任何區別
2)用私有構造器或者枚舉類型強化Singleton屬性
單例模式
3)私有化構造器強化不可實例的能力
4)避免創建不必要的對象
5)消除過期的對象引用
方法體中,對對象的使用已經完畢,但是堆中對象的實例內存卻沒有被釋放,這是因爲 仍然會維護着對該對象的過期引用,可能會造成內存泄漏,內存泄漏的幾個來源:
- 類自己管理內存
- 緩存
- 監聽器和其它回調
解決方案:在對象使用完畢後,對該對象賦值爲null
6)避免使用終結finalizer方法
對於所有對象都通用的方法
7)覆蓋equals時請遵守通用約定
equals方法的通用約定:自反性,對稱性,傳遞性和一致性
8)覆蓋equals方法總要覆蓋hashcode
equals相等, hashcode一定等
equals不等,hashcode不一定等
9)始終要覆蓋toString