第41條:用標記接口定義類型

定義類型有兩種方式:
一種是注解,這個之前已經提到過。
另一種是標記接口(不含方法聲明的接口)如Serializable:


image.png

將其作為標記來使用的好處是,可以在方法簽名中要求類包含哪些標記(即實現了哪些接口),從而使得不符合規范的代碼可以在編譯時及時檢查出來。


標記接口相較于標記注解的優點:

  • 標記接口定義的類型是由被標記類的實例實現的。比如class A implements Serializable,那么所有使用Serializable作為參數的地方都可以用A。
  • 可以被更加精確的鎖定。使用注解可以加在任何類上,如果一個標記只適用于特殊接口的實現,就可以使用標記接口。比如Set繼承于Collection,它沒有實現任何Collection的方法。Set的存在依據就是標記這個接口的所有實現類都是集合內元素唯一的。
  • 注解的優點就是"更大注解機制的一部分",因此標記注解在支持標記的框架中具有一致性。

之前一直認為接口是用來定義行為的,沒想到沒有方法的接口還可以當做標記來使用。
當我們需要添加的標記只用于類級別時,可以優先使用標記接口。如果需要應用于任何程序元素時,則應該使用注解。

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容