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

序言

@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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章