Effective Java第三版有哪些新功能?
自從聽說即將出版的有效Java 第三版以來,我一直想知道其中有什么新內容。 我假設將涵蓋自Java 6以來引入Java的功能,的確如此。 但是,第三版Java開發人員經典版也有一些其他更改。 在本文中,我提供了有關在第三版中添加,更改或刪除的主題的高級概述。
在列出我所觀察到的似乎是《 有效Java第三版》中的新內容之前,我需要做出免責聲明,說我很可能會錯過本書中的幾處更改,共有12章,涵蓋90個項目,涵蓋350頁以上。 這篇文章并不是要詳細介紹第三版中的變更,而只是作為變更的高級樣本,鼓勵讀者借閱或購買此有效Java第三版的副本來訪問本書。低級細節。
不出所料, Effective Java第三版中有許多重要的新內容,它們與Java 7 , Java 8甚至Java 9的新功能有關。
Java 7
Java 7推動的一個顯而易見的新項目是Item 9 (“ 首選try-with-resources而不是try-finally ”),因為try-with-resources是Java 7引入的。 第32項 (“ 明智地組合泛型和可變參數 ”)是第三版的新增內容,并討論了Java 7引入的 @SafeVarargs批注(該批注對Java 9進行了一些增強 )。
第8項 (“ 避免使用終結器和清理器 ”)已更新,以討論如何使用Java 7引入的AutoCloseable接口在某些最常用的用法中替換終結器和清理器。 項目49 (“ 有效性檢查參數 ”)已更新為引用Java 7引入的Objects.requireNonNull方法。
項目80(“ 首選執行人,任務和線程流 “)已經‘流’,因為有效的Java第二版加入到它的標題,包括討論關于加叉/加入到執行人框架在Java 7中第59項 (“ 了解和使用庫 ”)討論了Java 7中引入的ThreadLocalRandom 。
項目56 (“ 為所有公開的API元素編寫文檔注釋 ”)討論了使用JDK 7添加到javadoc命令行的-Xdoclint開關。
Java 8
項目21 (“ 后代的設計接口 ”)介紹了與在Java接口中使用默認方法有關的最佳實踐。 正如其標題所描述的那樣,整個第7章 (“ Lambda和流 ”)與Java 8引入的lambda和流有關,由關于這些功能編程概念的七個項目( 項目42至項目48 )組成。 項目55 (“ 明智地返回可選參數 ”)討論了Java 8引入的Optional的正確使用。
第1項 (“ 考慮使用靜態工廠方法而不是構造函數 ”)在第三版中不是一個新項目,但現在討論Java 8中支持并在Java 9中得到增強的接口中的靜態方法。 第19項 (“ 用于以下內容的設計和文檔”繼承還是禁止繼承 ”), 這也不是新鮮事物,但現在提到了Javadoc @implSpec標記 ,該標記 “已在Java 8中添加并在Java 9中大量使用”。 毫不奇怪, 第56項 (“ 為所有公開的API元素編寫文檔注釋 ”)還討論了@implSpec用法。
項目50 (“ 在需要時制作防御性副本 ”)沒有太多關注(日期和時間不是該項目的重點),但是引用了從Java 8開始使用Instant而不是Date的內容。
Java 9
有效的Java的第三版提供了比我預期的更少的有關模塊化 ( Java平臺模塊系統 )的指導,這可以說是我們許多人與Java 9關聯的第一件事。 項目15 (“ 最小化類和成員的可訪問性 ”)討論“作為模塊系統的一部分引入的兩個附加的隱式訪問級別?!?
在第二版中,第8項 (“ 避免使用終結劑和清潔劑 ”)的標題僅為“避免使用終結劑 ”。 在該項目的標題上添加“和清潔器”,表明Java 9 不贊成使用finalizer (由于我非常熟悉的原因),并用Cleaner類代替了它。
項目56 (“ 為所有公開的API元素編寫文檔注釋 ”)討論了Java 9引入的Javadoc標簽{@index} 。 項目59 (“ 了解和使用庫 ”)討論了在Java 9中為什么重要的是知道標準庫中的可用內容時使用Java 9將方法TransferTo(OutputStream)添加到InputStream的方法。
項目6 (“ 避免創建不必要的對象 ”)提到Java 9中對布爾型構造函數的棄用,該構造函數接受單個String參數,作為對該項目中要點的說明。 順便說一句,Java 9中也不推薦使用其他唯一的布爾構造函數[ Boolean(boolean) ]。
《有效的Java第三版》解決了Java 9對接口中的static方法( 第1項 )和Optional ( 第55項 )的改進。 第19項還引用了Java 9對@implSpec的大量使用。 這三個項目中的每一個都在本文前面的“ Java 8”部分中進行了突出顯示。
版本無關的新通用Java項目
在有效Java的第三版中 ,有一些新項目與第二版所涵蓋的Java新版本缺乏明顯的聯系。 其中包括第5項 (“ 首選依賴注入而不是硬連接資源 ”), 第25項 (“ 將源文件限制為單個頂級類 ”)和第85項 (“ 首選Java序列化的替代方法 ”)。 我在我的博客文章“ 將Google的協議緩沖區與Java結合使用 ”中寫了更多關于Item 85(“ Java序列化的替代品”) 的內容 。
刪除的項目和附錄
有效Java第二版中的一項似乎已被完全刪除。 第三版的有用“附錄”標題為“第二版對應的項目”,它表示第二版的單頁項目73 (“ 避免線程組 ”)已在第三版中“停用”。 本附錄的結構也很容易識別,第二版的第21項(“使用功能對象代表策略”)在第三版中由第42項 (“ 首選lambda優先于匿名類 ”)代替。 順便說一句,本書各版本中的錯別字似乎都很少,但是在第三版中確實突出的錯別字是附錄中與第二版中的第69項和第三版中的第81項相關的行。版。
小文本更新
在有效Java的第三版中,有幾項進行了較小的文本更新,其中一些在更改中具有重要意義。 這些是最難調用的,但是我在這里提供一個示例。 在第二版,布洛赫在括號傳球寫道, StringBuffer的是“過時的主要”相比, StringBuilder的 ,但在第三個版本,這是更強烈的措辭,狀態StringBuffer是的“過時的前身” StringBuilder 。 我完全同意案文的這種改變。
介紹
《 有效Java,第三版》的 11章涵蓋了構成“ Java平臺最佳實踐”的90個項目。 但是,第1章(“簡介”)很有價值,因為它將Java 7,Java 8和Java 9中的“關鍵功能”與討論這些關鍵功能的一個或多個項目以及引入了這些關鍵功能的Java版本相關聯。 我希望我早些注意它,但是直到我大部分完成這篇文章之后,才在第1頁上看到這個方便的表格。 該表將為我節省大量時間來確定涉及Java 7,Java 8和Java 9新功能的項目!
“簡介”也值得一讀,因為它列出了“本書中的大多數規則”所依據的“一些基本原理”。 我喜歡Bloch在簡介中明確指出的:“這本書不適合初學者:它假定您已經熟悉Java?!?在線上有無數的論壇和主題,人們要求為Java新手準備一本好書。 雖然我強烈建議有效的Java的各種版本的中級和高級Java開發人員,我一直認為,開始Java開發人員與學習Java,然后寫了一本書最好應該來有效的Java時,他們知道核心概念和想知道如何盡可能清楚,簡單地應用這些概念。
結論
這篇文章重點介紹了第三版中對有效Java的一些最重要的添加和更改。 但是,我只提到了Java 7,Java 8和Java 9的一些快速參考,并且無疑在摘要中錯過了一些新的和更改的文本。 為了反映Java的較新版本而對項目進行的一些較小更改的引用旨在說明如何將Java新功能編織到乍看似乎不一定與Java的較新版本相關的多個項目中。
有效的Java是我購買過三本書的唯一一本書,但是多年來,我現在已經購買了每個版本的一本書,對此并不感到遺憾。 高效Java的第三版不僅涵蓋Java 7,Java 8和Java 9的新功能,還添加了項目并更新了先前存在的項目,以反映Josh Bloch對使用Java編程語言的最佳實踐的最新想法。
翻譯自: https://www.javacodegeeks.com/2018/01/whats-new-effective-javas-third-edition.html
總結
以上是生活随笔為你收集整理的Effective Java第三版有哪些新功能?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 京东商城网下载电脑版(京东网上商城电脑版
- 下一篇: apache.camel_Apache