日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Effective Java 第三版 中文翻译

發布時間:2023/12/14 java 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Effective Java 第三版 中文翻译 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

effective-java-third-edition

介紹

Effective Java 第三版全文翻譯,純屬個人業余翻譯,不合理的地方,望指正,感激不盡!(OS:如果可以的話,給個Star唄!)

郵箱:lin-mt@outlook.com

目錄

推薦序

前言

致謝


第一章 引言


第二章 創建和銷毀對象

??本章涉及創建和銷毀對象,包括何時以及如何創建它們,何時以及如何避免創建它們,如何確保它們被及時銷毀,以及如何管理在銷毀之前必須進行的清理操作。

  • 第1項:考慮靜態工廠方法而不是構造函數
  • 第2項:當面臨多個參數的構造器時考慮使用構建器
  • 第3項:用私有構造器或者枚舉類型強化Singleton屬性
  • 第4項:通過私有構造器強化不可實例化的能力
  • 第5項:優先考慮依賴注入來引用資源
  • 第6項:避免創建不必要的對象
  • 第7項:消除過期的對象引用
  • 第8項:避免使用終結方法和清除方法
  • 第9項:try-with-resources優先于try-finally

第三章 對于所有對象都通用的方法

??盡管Object是一個具體類,但是設計它主要是為了擴展。它所有的非final方法(equals、hashCode、toString、clone和finalize)都有明確的通用約定(general contracts),因為它們被設計成是要被重寫(override)的。任何一個類,它在覆蓋這些方法的時候,都有責任遵守這些通用約定;如果做不到這一點,其他依賴于這些約定的類(例如HashMap和HashSet)就無法結合該類一起正常運作。

??本章將講述何時以及如何覆蓋這些非final的Object方法。本章不再討論finalize方法,因為第7項已經討論過這個方法了。而Comparable.compareTo雖然不是Object方法,但是本章也對它進行討論,因為它具有類似的特征。

  • 第10項:覆蓋equals時請遵守通用約定
  • 第11項:當重寫equals方法時總要重寫hashCode方法
  • 第12項:始終重寫toString方法
  • 第13項:謹慎地重寫clone方法
  • 第14項:考慮實現Comparable接口

第四章 類和接口

??類和接口是Java程序設計語言的何鑫,他們也是Java語言的基本抽象單元。Java語言提供了許多強大的基本元素,供程序猿來設計類和接口。本章包含的一些指南可以幫助你充分利用這些元素,以便讓你編寫的類和接口可用、健壯且靈活。

  • 第15項:使類和成員的可訪問性最小化
  • 第16項:要在公有類而非公有域中使用訪問方法
  • 第17項:使可變性最小化
  • 第18項:復合優先于繼承
  • 第19項:要么設計繼承并提供文檔說明,要么禁止繼承
  • 第20項:接口優于抽象類
  • 第21項:為后代設計接口
  • 第22項:接口只用于定義類型
  • 第23項:類層次優于標簽類
  • 第24項:靜態成員類優于非靜態成員類
  • 第25項:限制源文件為單個頂級類

第五章 泛型

??Java 1.5發行版本中增加了泛型(Generic)。在沒有泛型之前,從集合中讀取到的每一個對象都必須進行轉換。如果有人不小心插入了類型錯誤的對象,在運行時的轉換處理就會出錯。有個泛型,可以告訴編譯器每個集合中接收哪些對象類型。編譯器自動地為你的插入進行轉化,并在編譯時告知是否插入了類型錯誤的對象。這樣可以使程序既更加安全,也更加清楚,但是這些好處(不僅僅針對集合)是需要付出代價的。本章將告訴您如何最大化利益并最大限度地減少并發癥【使用泛型帶來的壞處】(complications)。

  • 第26項:請不要使用原生態類型
  • 第27項:消除非受檢的警告
  • 第28項:列表優于數組
  • 第29項:優先考慮泛型
  • 第30項:優先考慮泛型方法
  • 第31項:利用有限制通配符來提升API的靈活性
  • 第32項:謹慎并用泛型和可變參數
  • 第33項:優先考慮類型安全的異構容器

第六章 枚舉和注解

??Java支持兩種特殊用途的引用類型:一種成為枚舉(enum type)類型,以及一種稱為注解類型(annotation type)的接口。本章討論使用這些類型系列的最佳實踐。

  • 第34項:用enum代替int常量
  • 第35項:用實例域代替序數
  • 第36項:用EnumSet代替位域
  • 第37項:用EnumMap代替序數索引
  • 第38項:用接口模擬可擴展的枚舉
  • 第39項:注解優先于命名模式
  • 第40項:堅持使用Override注解
  • 第41項:用標記接口定義類型

第七章 Lambda和Stream

??在Java 8中,添加了函數接口,lambda和方法引用,以便更容易地創建函數對象。在這些語法(language)更改的同時添加進了流API,以便為處理數據元素序列提供庫支持。在本章中,我們將討論如何充分利用這些工具。

  • 第42項:Lambda優先于匿名類
  • 第43項:方法引用優先于Lambda
  • 第44項:堅持使用標準的函數接口
  • 第45項:謹慎使用Stream
  • 第46項:優先選擇Stream中無副作用的函數
  • 第47項:Stream要優先用Collection作為返回類型
  • 第48項:謹慎使用Stream并行

第八章 方法

??本章討論了方法設計的幾個方面:如何處理參數和返回值,如何設計方法簽名以及如何為方法編寫文檔。本章中的大部分內容適用于構造函數和方法。 與第4章一樣,本章重點介紹可用性,健壯性和靈活性。

  • 第49項:檢查參數的有效性
  • 第50項:必要時進行保護性拷貝
  • 第51項:謹慎設計方法簽名
  • 第52項:慎用重載
  • 第53項:慎用可變參數
  • 第54項:返回零長度的數組或者集合,而不是null
  • 第55項:謹慎返回optinal
  • 第56項:為所有導出的API元素編寫文檔注釋

第九章 通用編程

??本章主要討論Java語言的具體細節,討論了局部變量、控制結構、類庫、數據類型,以及兩種不是由語言本身提供的機制(reflection和native method,反射機制和本地方法)。最后討論了優化和命名慣例。

  • 第57項:將局部變量的作用域最小化
  • 第58項:for-each循環優先于傳統的for循環
  • 第59項:了解和使用類庫
  • 第60項:如果需要精確的答案,請避免使用float和double
  • 第61項:基本類型優先于裝箱基本類型
  • 第62項:如果其他類型更適合,則盡量避免使用字符串
  • 第63項:了解字符串連接的性能
  • 第64項:通過接口引用對象
  • 第65項:接口優先于反射機制
  • 第66項:謹慎地使用本地方法
  • 第67項:謹慎地進行優化
  • 第68項:遵守普遍接受的命名慣例

第十章 異常

??在最通常情況下,異常可以提高程序的可讀性,可靠性和可維護性。如果使用不當,可能會產生相反的效果。本章提供有效使用異常的指南。

  • 第69項:只針對異常的情況才使用異常
  • 第70項:對可恢復的情況使用受檢異常,對編程錯誤使用運行時異常
  • 第71項:避免不必要地使用受檢異常
  • 第72項:優先使用標準的異常
  • 第73項:拋出與抽象對應的異常
  • 第74項:每個方法拋出的所有異常都要建立文檔
  • 第75項:在細節消息中包含失敗-捕獲信息
  • 第76項:努力使失敗保持原子性
  • 第77項:不要忽略異常

第十一章 并發

??線程(RHREADS)機制允許同時進行多個活動。并發編程要比單線程編程要困難得多,因為有很多東西可能出錯,也很難重現失敗。你無法避免并發。它本來就存在Java平臺中了,如果你要從多核處理器中獲得更好的性能,并發也是一個必要條件,這些現在都是十分普遍的了。本章闡述的建議可以幫助你編寫出清晰、正確、文檔組織良好的并發程序。

  • 第78項:同步訪問共享的可變數據
  • 第79項:避免過度同步
  • 第80項:executor、task和stream優先于線程
  • 第81項:并發工具優先于wait和notify
  • 第82項:線程安全性的文檔化
  • 第83項:慎用延遲初始化
  • 第84項:不要依賴于線程調度器

第十二章 序列化

??本章關注對象序列化(object serialization) ,它是一個Java的框架,用來將對象編碼為字節流(序列化(serializing)),并從其編碼中重構對象(反序列化(deserializing))。一旦對象被序列化,其編碼可以從一個VM發送到另一個VM或存儲在磁盤上以便以后反序列化。本章重點介紹序列化的危險以及如何將序列化最小化。

  • 第85項:其他方法優先于Java序列化
  • 第86項:謹慎地實現Serializable接口
  • 第87項:考慮使用自定義的序列化形式
  • 第88項:保護性地編寫readObject方法
  • 第89項:對于實例控制,枚舉類型優先于readResolve
  • 第90項:考慮用序列化代理代替序列化實例

總結

以上是生活随笔為你收集整理的Effective Java 第三版 中文翻译的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。