Java面試題(19)Java元註解之@Retention

~沐风發表於2024-03-16

序言

@Retention 註解是用來註解的註解,稱為元註解,其作用可以簡單理解為設定註解的生命週期。

@Retention 註解傳入的是 RetentionPolicy 列舉,該列舉有三個常量,分別是 SOURCE、CLASS 和 RUNTIME

三者區別如下:

  • SOURCE 代表著註解僅保留在源級別中,編譯器將Java檔案編譯成class檔案時將之遺棄。
  • CLASS 代表著註解被保留在class檔案中,JVM載入class檔案時將之遺棄。
  • RUNTIME 代表著標記的註解會由JVM保留,因此執行時環境可以使用它。

關係:RUNTIME>CLASS>SOURCE

一般來說,我們自己定義的註解都是 RUNTIME 級別的,因為大多數情況我們是根據執行時環境去做一些處理。

而只要自定義的註解中**@Retention** 註解設定為 SOURCE 和 CLASS 這倆個級別,那麼就需要繼承 AbstractProcessor 並實現 process 方法,

因為 SOURCE 和 CLASS 這倆個級別等載入到JVM的時候註解就被抹除了。

資料

Java元註解之 @Retention

相關文章