Java】元注解

      網友投稿 818 2025-03-31

      1. 元注解的基本介紹

      2. 元注解的分類

      2.1 @Retention 注解

      2.2 @Target 注解

      2.3 @Documented 注解

      2.4 @Inherited 注解

      1. 元注解的基本介紹

      2. 元注解的分類

      2.1 @Retention 注解

      2.2 @Target 注解

      2.3 @Documented 注解

      【Java】元注解

      2.4 @Inherited 注解

      1. 元注解的基本介紹

      JDK 的元 Annotation 用于修飾其他 Annotation

      元注解: 本身作用不大,看源碼時,可以知道是干什么用的

      2. 元注解的分類

      Retention 指定注解的作用范圍,三種 SOURCE,CLASS,RUNTIME

      Target 指定注解可以在哪些地方使用

      Documented 指定該注解是否會在 javadoc 體現

      Inherited 子類會繼承父類注解

      2.1 @Retention 注解

      只能用于修飾一個 Annotation 定義, 用于指定該 Annotation 可以保留多長時間,@Rentention 包含一個 RetentionPolicy類型的成員變量,使用 @Rentention 時必須為該 value 成員變量指定值

      @Retention 的三種值

      RetentionPolicy.SOURCE: 編譯器使用后,直接丟棄這種策略的注釋

      RetentionPolicy.CLASS: 編譯器將把注解記錄在 class 文件中. 當運行 Java 程序時, JVM 不會保留注解。 這也是默認值。

      RetentionPolicy.RUNTIME:編譯器將把注解記錄在 class 文件中. 當運行 Java 程序時, JVM 會保留注解,程序可以通過反射獲取該注解

      三種值注入的時間如下:

      演示案例:Override 注解源碼

      @Target(ElementType.METHOD) @Retention(RetentionPolicy.SOURCE) //這個就是 RetentionPolicy.SOURCE 的取值 public @interface Override { }

      說明:Override的作用域在SOURCE,當編譯器編譯時生效,不會寫入到.class文件,也不會再runtime(運行時)生效

      Override 只在編譯器層面生效,或在源碼的時候生效,過了就不生效了

      2.2 @Target 注解

      用于修飾Annotation定義,用于指定被修飾的Annotation 能用于修飾哪些程序元素

      @Target 也包含一個名為value的成員變量。

      @Target源碼說明:

      @Documented @Retention(RetentionPolicy.RUNTIME) //它的作用是:RUNTIME @Target(ElementType.ANNOTATION_TYPE) //這里的 ANNOTATION_TYPE 說明 @Target 只能修飾注解 public @interface Target { //說明它是注解 /** * Returns an array of the kinds of elements an annotation type * can be applied to. * @return an array of the kinds of elements an annotation type * can be applied to */ ElementType[] value(); // 可以簡單看下 ElementType 的取值 }

      演示案例:@Deprecated源碼

      可以看到 @Deprecated 注解 Target 上的注解范圍有:構造器、字段、局部變量、方法、包、參數、類型。

      2.3 @Documented 注解

      @Documented:用于指定被該元 Annotation修飾的Annotation類將被javadoc工具提取成文檔,即在生成文檔時,可以看到該注解。

      說明:定義為Documented的注解必須設置Retention值為RUNTIME。

      案例演示:@Deprecated注解源碼如下

      可以看到文檔上的 @Deprecated 注解被保留了,就是因為 @Deprecated 注解上有 @Documented,在 javadoc 的時候就會保留 @Deprecated 這個注解

      @Documented 源碼如下

      @Documented @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.ANNOTATION_TYPE) public @interface Documented { }

      2.4 @Inherited 注解

      被它修飾的 Annotation 將具有繼承性,如果某個類使用了被@Inherited修飾的Annotation,則其子類將自動具有該注解

      說明:實際應用中,使用較少,了解即可。

      元注解:本身作用不大,看源碼時,可以知道是干什么的就行了

      Java

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:excel設置數據有效性的方法步驟詳解
      下一篇:excel制作學號/姓名/科目/成績登記表
      相關文章
      国产午夜亚洲精品不卡免下载| 亚洲自偷自偷在线成人网站传媒| 亚洲无人区码一二三码区别图片| 亚洲无圣光一区二区| 国产亚洲日韩一区二区三区| 亚洲Av无码乱码在线znlu| 亚洲国产成人精品无码区二本| 亚洲videos| 亚洲熟妇自偷自拍另欧美| 亚洲av极品无码专区在线观看| 亚洲午夜电影在线观看| 亚洲一区二区三区久久久久| 亚洲国产乱码最新视频| 色老板亚洲视频免在线观| 亚洲国产视频久久| 亚洲人成未满十八禁网站| 亚洲成a人无码亚洲成av无码| 亚洲色无码专区一区| 亚洲国产精品成人AV在线| 久久精品国产亚洲AV未满十八| 337P日本欧洲亚洲大胆艺术图| 成人婷婷网色偷偷亚洲男人的天堂| 亚洲av日韩专区在线观看| 苍井空亚洲精品AA片在线播放| www亚洲一级视频com| 亚洲精品岛国片在线观看| 亚洲天堂在线视频| 亚洲五月综合缴情在线观看| 亚洲成a人片在线观看日本| 亚洲四虎永久在线播放| 亚洲日本在线免费观看| 自拍偷区亚洲国内自拍| 人人狠狠综合久久亚洲| 亚洲国产成人久久一区久久| 亚洲一区二区三区偷拍女厕| 亚洲AV日韩AV永久无码久久| 亚洲系列国产精品制服丝袜第| 亚洲一区中文字幕在线电影网 | av在线亚洲欧洲日产一区二区| 国产亚洲精品资在线| 亚洲AV一宅男色影视|