整理 Effective Java 書中 Item 41: Use marker interfaces to define types 心得筆記
主旨
標記介面(Marker Interface)是沒有任何方法的介面,只是單純用來代表一個「型別」。雖然 Java 也可以用標註(annotation)來達到類似效果,但在要表示「某類型具備某種能力」時,還是推薦使用標記介面,因為它可以帶來更強的型別安全與語意明確性。
整理 Effective Java 書中 Item 41: Use marker interfaces to define types 心得筆記
標記介面(Marker Interface)是沒有任何方法的介面,只是單純用來代表一個「型別」。雖然 Java 也可以用標註(annotation)來達到類似效果,但在要表示「某類型具備某種能力」時,還是推薦使用標記介面,因為它可以帶來更強的型別安全與語意明確性。
整理 Effective Java 書中 Item 40: Use @Override annotations 心得筆記
在 Java 裡,如果你要「覆寫(override)」父類別或介面的某個方法,請務必加上 @Override
註解。這個小小的標記,不只是告訴編譯器「我想要覆寫」,更是一道保險機制,可以幫助你避免不小心寫出錯誤的程式碼。
整理Effective Java書中Item 39: Prefer annotations to naming patterns心得筆記
在 Java 裡,如果我們要標記一段程式碼是「特別用途」(像是測試方法),有兩種做法:一種是靠命名,例如把方法命名為 testXxx
,另一種則是用註解(Annotation)。這篇建議我們盡量使用註解,而不要依賴命名慣例,因為註解更安全、更具可讀性,也更容易維護。
整理Effective Java書中Item 38: Emulate extensible enums with interfaces心得筆記
Java 的 enum 雖然功能強大,但有一個主要限制:enum 是封閉的類型,不能被擴展。這意味著一旦定義了 enum,就無法在不修改原始程式碼的情況下添加新的值。這篇文章介紹如何使用介面來解決這個問題。
整理Effective Java書中Item 37: Use EnumMap instead of ordinal indexing心得筆記
在 Java 中,我們有時會用 int
索引的陣列來儲存與 enum 相關的資料,但這種做法容易造成型別不安全和可讀性問題。Java 提供了 EnumMap
類別,專門用來處理 enum 類型的映射關係,提供更安全、更清楚的解決方案。
假設我們要儲存每個星期幾的開門時間,傳統作法可能會這樣寫: