Effective Java Item 10 - Obey the general contract when overriding equals

整理Effective Java書中Item 10: Obey the general contract when overriding equals心得筆記

主旨

當覆寫 equals() 方法時,必須遵守其一般契約,這是設計 equals() 方法時的基本要求。如果不遵守這些規範,會導致難以預測的錯誤。

劃重點

equals() 方法的一般契約

  1. 對稱性:如果 a.equals(b) 返回 true,那麼 b.equals(a) 也應該返回 true
  2. 自反性:對於任何非 null 的參照變數 aa.equals(a) 必須返回 true
  3. 傳遞性:如果 a.equals(b) 返回 trueb.equals(c) 返回 true,那麼 a.equals(c) 必須返回 true
  4. 一致性:如果兩個物件相等,多次調用 a.equals(b) 應該返回相同的結果,前提是 b 沒有改變。
  5. null 的比較a.equals(null) 應該返回 false
Read more

Effective Java Item33 考慮使用類型安全的異質容器

整理Effective Java書中Item 33: Consider typesafe heterogeneous containers心得筆記

主旨

有時候你需要更靈活的容器來處理異質數據。本文介紹了如何使用類型安全的異質容器,讓程式碼既靈活又具安全性。

劃重點

  1. 異質容器的問題:異質容器可以存儲不同類型的物件,若不加以管理,容易導致類型錯誤。
  2. 使用泛型設計類型安全容器:透過泛型來確保容器內部元素的類型一致,避免運行時出現錯誤。
  3. 實現類型安全的異質容器:使用封裝類型來實現異質容器,使其可以存儲不同類型的物件,同時保證類型安全。
Read more

Effective Java Item32 明智地結合泛型和可變參數

主旨

將泛型和可變參數結合使用時可能會引發類型安全問題。本文將介紹如何避免這些問題,確保程式碼的安全性。

劃重點

  1. 泛型與可變參數結合的危險:可變參數是陣列,而陣列類型是可變的,這會導致類型不匹配問題。
  2. 使用 @SafeVarargs 註解:確保方法不會修改可變參數,並能抑制類型安全警告。
  3. 替代方案:使用 List:使用 List 代替可變參數,避免類型安全問題。
Read more

Effective Java Item31 使用有邊界的通配符提高API的靈活性

整理Effective Java書中Item 31: Use bounded wildcards to increase API flexibility心得筆記

主旨

使用有邊界的通配符可以提高API的靈活性,同時保持類型安全。這樣能讓你的Java程式碼支援更多的類型,並且保證不會發生類型錯誤。

劃重點

有邊界的通配符是Java泛型中的一個強大工具,它能讓方法處理多種不同類型,同時保持程式碼的類型安全。

  1. ? extends T 允許傳入T及其子類。
  2. ? super T 允許傳入T及其父類。
  3. 使用邊界通配符能讓你的API更加靈活,減少程式碼重複。
Read more

Effective Java Item30 優先使用泛型方法

整理Effective Java書中Item 30: Favor generic methods心得筆記

主旨

本篇針對泛型方法的說明

範例

Read more