7 回答

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超5個(gè)贊
聲明為final的變量,必須在類加載完成時(shí)已經(jīng)賦值,?是什么意思呢?
就是,如果你是final非static成員,必須在構(gòu)造器、代碼塊、或者直接定義賦值;
如果是final static 成員變量,必須直接賦值 或者在 靜態(tài)代碼塊中賦值。
然而直接賦值 或 靜態(tài)代碼塊中賦值 就變成餓漢模式了,
所以懶漢模式中,不能用final修飾

TA貢獻(xiàn)1886條經(jīng)驗(yàn) 獲得超2個(gè)贊
不一定需要final關(guān)鍵字吧。單例設(shè)計(jì)模式餓漢還是懶漢之分在于調(diào)用對(duì)象之前已經(jīng)初始化還是調(diào)用之后再初始化。

TA貢獻(xiàn)1993條經(jīng)驗(yàn) 獲得超6個(gè)贊
我知道這個(gè),我的疑問是既然區(qū)別只是在聲明類的實(shí)例化對(duì)象的時(shí)機(jī)不同,為什么聲明的時(shí)候修飾的關(guān)鍵字不一樣

TA貢獻(xiàn)1833條經(jīng)驗(yàn) 獲得超4個(gè)贊
用餓漢式實(shí)現(xiàn)時(shí),
private static final Singleton instance = new Singleton();
在聲明時(shí)需要直接創(chuàng)建實(shí)例。
用懶漢式實(shí)現(xiàn)時(shí),
private static Singleton instance;
聲明時(shí)不需要直接創(chuàng)建對(duì)象,但這兩種在聲明的時(shí)候?yàn)槭裁匆粋€(gè)用了final修飾一個(gè)沒用?
添加回答
舉報(bào)