Effective Java 第三版筆記(目錄)
《Effective Java, Third Edition》一書英文版已經出版,這本書的第二版想必很多人都讀過,號稱Java四大名著之一,不過第二版2009年出版,到現在已經將近8年的時間,但隨著Java 6,7,8,甚至9的釋出,Java語言發生了深刻的變化。
讀書筆記
- 第1章 介紹 (Introduction)
- 第2章 建立和銷燬物件(Creating and Destroying Objects)
- 第1條 考慮用靜態工廠方式替代構造器(Consider static factory methods instead of constructors)
- 第3章 對於所有物件都通用的方法(Methods Common to All Objects)
- 第4章 類和介面(Classes and Interfaces)
- 第5章 泛型(Generics)
- 第6章 列舉和註釋(Enums and Annotations)
- 第7章 Lambda和流(Lambdas and Streams)*
- 第8章 方法(Methods)
- 第9章 通用程式設計(General Programming)
- 第10章 異常(Exceptions)
- 第11章 併發(Concurrency)
- 第12章 序列化(Serialization)
- 其他(Other)
備註:帶*的表示比第二版多出的內容。
參考文獻
- Effective Java 中文版 第2版@楊春華 俞黎敏 譯 (美)Joshua Bloch 著
- Effective.Java.3rd.Edition(美)Joshua Bloch 著
相關推薦
Effective Java 第三版筆記(目錄)
《Effective Java, Third Edition》一書英文版已經出版,這本書的第二版想必很多人都讀過,號稱Java四大名著之一,不過第二版2009年出版,到現在已經將近8年的時間,但隨著Java 6,7,8,甚至9的釋出,Java語言發生了深刻的變化。 讀書筆記 第1章 介紹 (Intro
Effective Java 第三版讀書筆記——條款1.考慮使用靜態工廠方法替代構造器
lean jdb 底層 public lasso 基本 win inter nds 獲取一個類的實例的傳統方法是使用公開的構造器,除此之外,一個類還可以提供公開的靜態工廠方法(static factory method)來返回它的實例。例如 Boolean 類中的 valu
Effective Java 第三版讀書筆記——條款3:使用私有構造器或列舉型別來強制實現 singleton 屬性
單例(singleton)就是一個只例項化一次的類。使類成為單例可能會使它的測試變得困難,因為除非它實現了作為其型別的介面,否則不可能用模擬實現來代替這個單例。下面是幾種實現單例的方法: 使用 public field 方法 // Singleton with public final field pub
Effective Java 第三版讀書筆記——條款5:使用依賴注入替代替代硬連線資源
許多類都會依賴一個或多個基本資源。例如,拼寫檢查器依賴於字典。下面是兩種錯誤的實現方式: 使用 static utility classes: // Inappropriate use of static utility - inflexible & untestable! public cl
Effective Java 第三版讀書筆記——條款7:清除過期的物件引用
Java 帶有垃圾回收(garbage-collected)機制,這使程式設計師的工作變得容易了很多——因為你的物件在使用完畢以後就自動回收了。這很容易讓人覺得你不需要考慮記憶體管理,但這並不完全正確。 考慮下面這個簡單的棧實現: // Can you spot the "memor
Effective Java 第三版讀書筆記——條款6:避免建立不必要的物件
通常來講,重用一個物件比建立一個功能相同的物件更加合適。重用速度更快,並且更接近現代的程式碼風格。如果物件是不可變的(條款 17),它總是可以被重用。 考慮一個極端的例子: String s = new String("bikini"); // DON'T DO THIS! 這
Effective Java 第三版讀書筆記——條款4:使用私有構造器來強制實現不可例項化
偶爾你會想寫一個類,這個類只是一組靜態方法和靜態屬性。 這樣的類獲得了不好的名聲,因為有些人濫用這些類而避免以面向物件的方式思考,但是它們有時候確實有實際的用處: 它們可以被用來聚集一組建立在基礎型別或陣列之上的相關方法,例如 java.lang.Math 或 java.util
Effective Java 第三版讀書筆記——條款2:當構造器引數太多時考慮使用 builder 模式
靜態工廠方法和構造器都有一個限制:不能很好地支援可選引數(optional parameters)很多的類。考慮一個代表包裝食品上營養成分標籤的類:這些標籤有幾個必需的屬性(每份建議攝入量、每個包裝所含的份數、每份的卡路里)和超過二十個可選的屬性(總脂肪、飽和脂肪、反式脂肪、鈉等等)。應該為
Effective Java 第三版閱讀筆記——條款1.考慮使用靜態工廠方法替代構造器
獲取一個類的例項的傳統方法是使用公開的構造器,除此之外,一個類還可以提供公開的靜態工廠方法(static factory method)來返回它的例項。例如 Boolean 類中的 valueOf 方法,這個方法將基本型別 boolean 轉換為一個 Boolean 物件的引用: pub
Effective Java 第三版讀書筆記——條款11:重寫 equals 方法的同時也要重寫 hashCode 方法
在每一個重寫 equals 方法的類中,都要重寫 hashCode 方法。如果不這樣做,你的類會違反 hashCode 的通用約定,這會阻止它在 HashMap 和 HashSet 這樣的集合中正常工作。下面是根據 Object 原始碼改編的約定: 在一個應用程式執行過程中,如果在 equal
Effective Java 第三版讀書筆記——條款12:總是重寫 toString 方法
雖然 Object 類提供了 toString 方法的實現,但它返回的字串通常不是類的使用者想要看到的。它由類名後跟一個 “ at ” 符號(@)和雜湊碼的無符號十六進位制表示組成,例如 [email protected]。toString 的通用約定要求,返回的字串應該是“一個簡潔但內容豐富的表示
Effective Java 第三版讀書筆記——條款10:重寫 equals 方法時遵守通用的規定
重寫 equals 方法看起來很簡單,但是有很多方法會導致重寫出錯。避免此問題的最簡單方法是不去重寫 equals 方法,在這種情況下,類的每個例項只與自身相等。如果滿足以下任一條件,則說明不去重寫是正確的做法: 每個類的例項都是固有唯一的。例如像 Thread 這樣代表活動實
Effective Java 第三版讀書筆記——條款8:避免使用 Finalizer 和 Cleaner 機制
Finalizer 機制通常是不可預知的、危險的、不必要的。它們的使用會導致不穩定的行為,糟糕的效能和移植性問題。從 Java 9 開始,Finalizer 機制已被棄用,但仍被 Java 類庫所使用。 Java 9 中 Cleaner 機制代替了 Finalizer 機制。 Cleaner
Effective Java 第三版讀書筆記——條款14:考慮實現 Comparable 介面
與本章討論的其他方法不同,compareTo 方法並沒有在 Object 類中宣告。相反,它是 Comparable 介面中的唯一方法。 通過實現 Comparable 介面,一個類表明它的例項有一個自然序( natural ordering )。對實現 Comparable 介面的物件所組成的陣列排序非常簡
Effective Java 第三版讀書筆記——條款14:考慮實現 Comparable 接口
組成 筆記 進一步 屬性。 gin 足夠 聲明 diff cast 與本章討論的其他方法不同,compareTo 方法並沒有在 Object 類中聲明。相反,它是 Comparable 接口中的唯一方法。 通過實現 Comparable 接口,一個類表明它的實例有一個自然序
Effective Java 第三版讀書筆記——條款3:使用私有構造器來強制實現不可例項化
偶爾你會想寫一個類,這個類只是一組靜態方法和靜態屬性。 這樣的類獲得了不好的名聲,因為有些人濫用這些類而避免以面向物件的方式思考,但是它們有時候確實有實際的用處: 它們可以被用來聚集一組建立在基礎型別或陣列之上的相關方法,例如 java.lang.Math
Effective Java 第三版讀書筆記——條款9:使用 try-with-resources 語句替代 try-finally 語句
Java 類庫中包含許多必須手動呼叫 close 方法來關閉的資源, 比如InputStream、OutputStream 和 java.sql.Connection。 從以往來看,try-finally 語句是保證資源正確關閉的最佳方式,即使是在程式丟擲異常或
Effective Java 第三版讀書筆記——條款 43:方法引用優於 lambda 表達式
標識 lines struct 靜態工廠方法 簡潔 數字 數組 並且 實現 lambda 優於匿名類的主要優點是它更簡潔。Java 提供了一種生成函數對象的方法,比 lambda 還要簡潔,那就是方法引用( method references)。下面是一段代碼片段,它維護一
Effective Java 第三版讀書筆記——條款 44:優先使用標準的函數式接口
list pro instant 參數 設計 受保護 所有 arrays 批量 現在 Java 已經有了 lambda 表達式,編寫 API 的最佳實踐已經發生了很大的變化。例如模板方法模式——其中一個子類重寫原始方法以專門化其父類的行為——變得沒有那麽吸引人。現代替代的選
Effective Java 第三版讀書筆記——條款 45:明智而謹慎地使用Stream
pip resource 如果 ast 批量 統一 發現 lines 控制 在 Java 8 中添加了 Stream API,以簡化順序或並行執行批量操作的任務。該 API 提供了兩個關鍵的抽象:流(Stream),表示有限或無限的數據元素序列,以及流管道(stream p