整理 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 21: Design interfaces for multiple inheritance 心得筆記
Java 8 引入了 default method,終於讓介面可以新增方法而不會立刻讓現有的實作壞掉。但這個看似萬能的解法,其實潛藏不少風險,特別是對原本沒設計來支援這些方法的舊實作。這篇提醒你:設計介面時最好一開始就想清楚,因為事後「加東西」很可能會讓系統爆炸。
在 Java 8 之前,介面一旦公開出去,就幾乎不能再改。加一個新方法,所有實作都會爆錯。default method 的出現,讓我們「表面上」可以擴充介面,不用動到原本的實作。