前言
從去年的3月份起我就在開始讀《Effective Java 第二版》,當(dāng)然,我讀的是中文版的;可能是我理解能力還不行,對(duì)于書中的內(nèi)容總是感覺理解困難;就拿第一章的內(nèi)容「創(chuàng)建和銷毀對(duì)象」來說吧,這是我讀的次數(shù)最多的一章,想必原因大家也是明白的,每次我讀不下去的時(shí)候,我就從頭開始讀,所以,現(xiàn)在我對(duì)這本書的第一章是最為熟悉的了。后來,有一次我上網(wǎng)看到有網(wǎng)友說這本書確實(shí)和絕大部分的翻譯書籍一樣,對(duì)于有些原文中的內(nèi)容翻譯的不是很流暢,所以會(huì)導(dǎo)致閱讀的人感覺難以理解;于是,我就斗膽下了本英文的原版來對(duì)照著來看,發(fā)現(xiàn)確實(shí)這樣理解起來就更容易了,所以最后花了一兩個(gè)月的時(shí)間就把整本書給啃完了(好吧,真實(shí)的情況是,這段時(shí)間我參與了幾個(gè)項(xiàng)目,編程經(jīng)驗(yàn)也因此積累了不少,所以對(duì)于《Effective Java》這本書里推薦的「最佳實(shí)踐」有了一點(diǎn)點(diǎn)的思考與理解。)
其實(shí),到目前為止,我還是會(huì)時(shí)不時(shí)地拿起這本書來翻看,每次讀都感覺與上一次不一樣,這也許就是「溫故知新」的意思吧。
第三版新條目
上面的絮絮叨叨大家可以不用關(guān)心,現(xiàn)在我就來介紹下第三版中加入的一些新的條目。
大家可以先看下下面這張圖,有個(gè)整體的概念。

因?yàn)椋禘ffective Java 第二版》的原版是2008年出版的,至今(2018)年已經(jīng)有十年了,Java 語言在這十年里也發(fā)展的比較迅速,對(duì)于第二版中提及的「最佳實(shí)踐」有些已經(jīng)不是特別推薦了,幸好作者 Joshua Bloch 大叔重操舊筆為我們這群麻瓜帶來了最新的條目,同時(shí)也更新了原有的條目。
這本書的原版是去年完稿的(2017年12月18號(hào)),作者正好補(bǔ)充了 Java 7、Java 8 和 Java 9 的一些「最佳實(shí)踐」。另外,想必關(guān)注 Java 發(fā)展的麻瓜們已經(jīng)了解到了 Java 之后的發(fā)版規(guī)則改了,「Java版本發(fā)布周期變更為每六個(gè)月一次」。是不是一下子覺得有點(diǎn)緊張了啊,其實(shí)也沒什么好擔(dān)心的,新特性的快速添加,對(duì)我們也是好事,可以減少一些低效的操作,使用新特性來解放生產(chǎn)力。
Java 7 新特性
- try-with-resources | 一種新的資源關(guān)閉處理方式
- @SafeVarargs | 忽略任何使用參數(shù)為泛型變量的方法或構(gòu)造函數(shù)調(diào)用產(chǎn)生的警告
Java 8 新特性
- Lambdas | 引入函數(shù)式編程
- Streams | 流式數(shù)據(jù)處理
- Optionals | 參考Google的Guava類庫實(shí)現(xiàn)的,用來解決空指針異常(NullPointerException,NPE)問題
- Default methods in interfaces | 接口中可以有默認(rèn)實(shí)現(xiàn)方法了
Java 9 新特性
- Modules | 將 JDK 源代碼重新組織為模塊,對(duì)構(gòu)建系統(tǒng)進(jìn)行增強(qiáng)以使之支持對(duì)模塊的編譯,并在構(gòu)建時(shí)強(qiáng)制對(duì)模塊邊界的應(yīng)用
總結(jié)
這就是《Effective Java 第三版》新添加的條目,這篇文章只是大概的展示下新添加的條目,具體的內(nèi)容還是需要讀者去閱讀書籍去了解,本人目前也在閱讀當(dāng)中,后續(xù)有什么閱讀感悟會(huì)及時(shí)與諸君分享的。那么,重要的問題來了,如何去獲取這本書籍的,因?yàn)橹形姆g版本還沒有那么快,如果,你對(duì)你的英文還感到有點(diǎn)自信,可以試試閱讀原版。這里我就造福下你們了。下載地址:《Effective Java 第三版原版pdf》