effective java 第二章 (筆記)

第2章 創(chuàng)建和銷毀對(duì)象

第1條:考慮用靜態(tài)工廠方法代替構(gòu)造器

靜態(tài)工廠方法,只是一個(gè)返回類的實(shí)例的靜態(tài)方法夷野。

示例:boolean基本類型轉(zhuǎn)化成Boolean對(duì)象引用

public static Boolean valueOf(boolean e){
    return b ? Boolean.TRUE : Boolean.FALSE;
}

優(yōu)勢(shì):

1.有名稱,也就是說看著清楚白守问。

2.不必在每次調(diào)用的時(shí)候都創(chuàng)建新的對(duì)象署恍。(避免了創(chuàng)建不必要的重復(fù)對(duì)象,從而提高了性能)
重復(fù)的調(diào)用返回相同對(duì)象

實(shí)例受控的類:確保是單例侦厚,或者不可實(shí)例化,
使得不可變的類可以確保不會(huì)存在兩個(gè)相等的實(shí)例拙徽,當(dāng)且僅當(dāng)==時(shí)equals() 是true

3.可以返回原返回類型的任何子類型的對(duì)象刨沦。

4.在創(chuàng)建參數(shù)化類型實(shí)例的時(shí)候靶累,使代碼變得更加簡(jiǎn)潔稻扬。

構(gòu)造器參數(shù)

Map<String,List<String>> map = new HashMap<String,List<String>>();

靜態(tài)方法---類型推導(dǎo)

Map<String,List<String>> map = HashMap.newInstance();

public static <K,V> HashMap<K,V> newInstance(){
    return new HashMap<K,V>();
}

缺點(diǎn):

1.類如果不包含公有或者受保護(hù)的構(gòu)造器,就不能被子類化雁比。

其實(shí)并不是什么缺點(diǎn)淳蔼,鼓勵(lì)使用復(fù)用侧蘸,而不是繼承。(16條)

2.與其他靜態(tài)方法實(shí)際上沒有任何區(qū)別鹉梨。

但是有慣用的名稱:valueOf,of,newInstance,getInstance,getType,newType等

第2條:遇到多個(gè)構(gòu)造器參數(shù)時(shí)要考慮用構(gòu)建器

最容易想到的就是讳癌,重疊構(gòu)造器模式。但是隨著參數(shù)增多存皂,造成編寫困難晌坤,閱讀困難。

1.JavaBean模式 :調(diào)用默認(rèn)的無(wú)參構(gòu)造器創(chuàng)建對(duì)象旦袋,然后使用setter方法來(lái)設(shè)置每個(gè)參數(shù)(實(shí)踐中很少用)

當(dāng)然有缺點(diǎn):

構(gòu)造過程JavaBean可能處于不一致的狀態(tài)骤菠。

JavaBean模式阻止了將該類做成不可變的可能。(15條)

2.Builder模式 24

此處有實(shí)例

如果類的構(gòu)造器或者靜態(tài)工廠中具有多個(gè)參數(shù)疤孕,設(shè)計(jì)這種類時(shí)商乎,Builder模式就是種不錯(cuò)的選擇。

*** 第3條:用私有構(gòu)造器或者枚舉類型強(qiáng)化Singleton屬性 ***

Singleton 指僅僅被實(shí)例化一次的類祭阀。

工廠方法的優(yōu)勢(shì):提供了靈活性鹉戚;泛型

單元素的枚舉類型已經(jīng)成為實(shí)現(xiàn)單例的最佳方法

public enum Elvis{
    INSTANCE;
    public void leaveTheBuilding(){……}
}

*** 第4條:通過私有構(gòu)造器強(qiáng)化不可實(shí)例化的能力 ***

私有構(gòu)造器鲜戒,記得加注釋。

*** 第5條:避免創(chuàng)建不必要的對(duì)象 ***

最好能重用對(duì)象而不是每次需要的時(shí)候都創(chuàng)建一個(gè)相同功能的新對(duì)象抹凳。
如果對(duì)象是不可變的遏餐,它就始終可以被重用。

靜態(tài)的初始化器

static{
    ...
}

要優(yōu)先使用基本類型而不是裝箱基本類型赢底,要當(dāng)心無(wú)意識(shí)的自動(dòng)裝箱失都。

*** 第6條:消除過期的對(duì)象引用 ***

Stack類自己管理內(nèi)存。存儲(chǔ)池包含了elements數(shù)組(對(duì)象引用單元幸冻,而不是對(duì)象本身)的元素粹庞。

數(shù)組活動(dòng)區(qū)域的元素是已分配的,而數(shù)組其余部分的元素是自用的嘁扼。但是GC不知道信粮。

只要類是自己管理內(nèi)存黔攒,就應(yīng)該警惕內(nèi)存泄露問題趁啸。

緩存:用WeakHashMap

LinkedHashMap是利用它的removeEldlestEntry方法實(shí)現(xiàn)

對(duì)于更復(fù)雜的緩存,使用 java.lang.ref

監(jiān)聽器和其他回調(diào)

回調(diào)立即被當(dāng)成gc :只保存他們的弱引用(weak reference)督惰,如保存成WeakHashMap的鍵

Heap剖析工具---Heap Profiler

*** 第7條:避免使用終結(jié)方法 ***

終結(jié)方法 (finalizer)

不應(yīng)該依賴終結(jié)方法來(lái)更新重要的持久狀態(tài)不傅。

System.gc 和 System。runFinalization 并不保證終結(jié)方法一定會(huì)被執(zhí)行赏胚。

顯式的終止方法——一般與try-finally結(jié)構(gòu)一起使用:
InputStream,OutputStream,sql的close()
Timer的cancel()

終結(jié)方法的好處:為了安全访娶,與對(duì)象的本地對(duì)等體有關(guān)

將終結(jié)方法放到一個(gè)匿名的類里:終結(jié)它的外圍實(shí)例----終結(jié)方法守衛(wèi)者

繼續(xù)補(bǔ)充中。觉阅。崖疤。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市典勇,隨后出現(xiàn)的幾起案子劫哼,更是在濱河造成了極大的恐慌,老刑警劉巖割笙,帶你破解...
    沈念sama閱讀 222,183評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件权烧,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡伤溉,警方通過查閱死者的電腦和手機(jī)般码,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)乱顾,“玉大人板祝,你說我怎么就攤上這事∽呔唬” “怎么了券时?”我有些...
    開封第一講書人閱讀 168,766評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵囊嘉,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我革为,道長(zhǎng)扭粱,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,854評(píng)論 1 299
  • 正文 為了忘掉前任震檩,我火速辦了婚禮琢蛤,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘抛虏。我一直安慰自己博其,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,871評(píng)論 6 398
  • 文/花漫 我一把揭開白布迂猴。 她就那樣靜靜地躺著慕淡,像睡著了一般。 火紅的嫁衣襯著肌膚如雪沸毁。 梳的紋絲不亂的頭發(fā)上峰髓,一...
    開封第一講書人閱讀 52,457評(píng)論 1 311
  • 那天,我揣著相機(jī)與錄音息尺,去河邊找鬼携兵。 笑死,一個(gè)胖子當(dāng)著我的面吹牛搂誉,可吹牛的內(nèi)容都是我干的徐紧。 我是一名探鬼主播,決...
    沈念sama閱讀 40,999評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼炭懊,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼并级!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起侮腹,我...
    開封第一講書人閱讀 39,914評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤嘲碧,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后凯旋,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體呀潭,經(jīng)...
    沈念sama閱讀 46,465評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,543評(píng)論 3 342
  • 正文 我和宋清朗相戀三年至非,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了钠署。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,675評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡荒椭,死狀恐怖谐鼎,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情趣惠,我是刑警寧澤狸棍,帶...
    沈念sama閱讀 36,354評(píng)論 5 351
  • 正文 年R本政府宣布身害,位于F島的核電站,受9級(jí)特大地震影響草戈,放射性物質(zhì)發(fā)生泄漏塌鸯。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,029評(píng)論 3 335
  • 文/蒙蒙 一唐片、第九天 我趴在偏房一處隱蔽的房頂上張望丙猬。 院中可真熱鬧,春花似錦费韭、人聲如沸茧球。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)抢埋。三九已至,卻和暖如春督暂,著一層夾襖步出監(jiān)牢的瞬間揪垄,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工损痰, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留福侈,地道東北人酒来。 一個(gè)月前我還...
    沈念sama閱讀 49,091評(píng)論 3 378
  • 正文 我出身青樓卢未,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親堰汉。 傳聞我的和親對(duì)象是個(gè)殘疾皇子辽社,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,685評(píng)論 2 360

推薦閱讀更多精彩內(nèi)容

  • 創(chuàng)建和銷毀對(duì)象時(shí) 1. 考慮用靜態(tài)工廠方法代替構(gòu)造器 1.1 優(yōu)點(diǎn) 靜態(tài)工廠方法有名稱 不必重復(fù)創(chuàng)建新對(duì)象 可以返...
    ktdroid閱讀 252評(píng)論 0 0
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法,類相關(guān)的語(yǔ)法翘鸭,內(nèi)部類的語(yǔ)法滴铅,繼承相關(guān)的語(yǔ)法,異常的語(yǔ)法就乓,線程的語(yǔ)...
    子非魚_t_閱讀 31,664評(píng)論 18 399
  • Effective Java筆記一 創(chuàng)建和銷毀對(duì)象 第1條 考慮用靜態(tài)工廠方法代替構(gòu)造器 第2條 遇到多個(gè)構(gòu)造器參...
    圣騎士wind閱讀 385評(píng)論 0 2
  • 國(guó)家電網(wǎng)公司企業(yè)標(biāo)準(zhǔn)(Q/GDW)- 面向?qū)ο蟮挠秒娦畔?shù)據(jù)交換協(xié)議 - 報(bào)批稿:20170802 前言: 排版 ...
    庭說閱讀 11,007評(píng)論 6 13
  • 君猶為器也汉匙,人猶為水也,方圓在于器不在于水也生蚁!
    買火柴的大叔閱讀 176評(píng)論 0 0