日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

c JAVA 注解,Java元注解作用及使用

發布時間:2024/9/3 java 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c JAVA 注解,Java元注解作用及使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

元注解是負責對其它注解進行說明的注解,自定義注解時可以使用元注解。Java 5 定義了 4 個注解,分別是 @Documented、@Target、@Retention 和 @Inherited。Java 8 又增加了 @Repeatable 和 @Native 兩個注解。這些注解都可以在 java.lang.annotation 包中找到。下面主要介紹每個元注解的作用及使用。

本節示例會用到自定義注解,不了解可先閱讀學習《Java自定義注解》一節。

@Documented

@Documented 是一個標記注解,沒有成員變量。用 @Documented 注解修飾的注解類會被 JavaDoc 工具提取成文檔。默認情況下,JavaDoc 是不包括注解的,但如果聲明注解時指定了 @Documented,就會被 JavaDoc 之類的工具處理,所以注解類型信息就會被包括在生成的幫助文檔中。

下面通過示例來了解它的用法,代碼如下所示。

例 1

@Documented

@Target({ ElementType.TYPE, ElementType.METHOD })

public @interface MyDocumented {

public String value() default "這是@Documented注解";

}

測試類:

@MyDocumented

public class DocumentedTest {

/**

* 測試document

*/

@MyDocumented

public String Test() {

return "C語言中文網Java教程";

}

}

打開 Java 文件所在的目錄,分別輸入如下兩條命令行:

javac MyDocumented.java DocumentedTest.java

javadoc -d doc MyDocumented.java DocumentedTest.java

運行成功后,打開生成的幫助文檔,可以看到在類和方法上都保留了 MyDocument 的注解信息。如下圖所示:

@Target

@Target 注解用來指定一個注解的使用范圍,即被 @Target 修飾的注解可以用在什么地方。@Target 注解有一個成員變量(value)用來設置適用目標,value 是 java.lang.annotation.ElementType 枚舉類型的數組,下表為 ElementType 常用的枚舉常量。

名稱

說明

CONSTRUCTOR

用于構造方法

FIELD

用于成員變量(包括枚舉常量)

LOCAL_VARIABLE

用于局部變量

METHOD

用于方法

PACKAGE

用于包

PARAMETER

用于類型參數(JDK 1.8新增)

TYPE

用于類、接口(包括注解類型)或 enum 聲明

例 2

自定義一個 MyTarget 注解,使用范圍為方法,代碼如下所示。

@Target({ ElementType.METHOD })

public @interface MyTarget {

}

class Test {

@MyTarget

String name;

}

如上代碼第 6 行會編譯錯誤,錯誤信息為:

The annotation @MyTarget is disallowed for this location

提示此位置不允許使用注解 @MyDocumented,@MyTarget 不能修飾成員變量,只能修飾方法。

@Retention

@Retention 用于描述注解的生命周期,也就是該注解被保留的時間長短。@Retention 注解中的成員變量(value)用來設置保留策略,value 是 java.lang.annotation.RetentionPolicy 枚舉類型,RetentionPolicy 有 3 個枚舉常量,如下所示。

SOURCE:在源文件中有效(即源文件保留)

CLASS:在 class 文件中有效(即 class 保留)

RUNTIME:在運行時有效(即運行時保留)

生命周期大小排序為 SOURCE < CLASS < RUNTIME,前者能使用的地方后者一定也能使用。如果需要在運行時去動態獲取注解信息,那只能用 RUNTIME 注解;如果要在編譯時進行一些預處理操作,比如生成一些輔助代碼(如 ButterKnife),就用 CLASS 注解;如果只是做一些檢查性的操作,比如 @Override 和 @SuppressWarnings,則可選用 SOURCE 注解。

@Inherited

@Inherited 是一個標記注解,用來指定該注解可以被繼承。使用 @Inherited 注解的 Class 類,表示這個注解可以被用于該 Class 類的子類。就是說如果某個類使用了被?@Inherited 修飾的注解,則其子類將自動具有該注解。

例 3

創建一個自定義注解,代碼如下所示:

@Target({ ElementType.TYPE })

@Inherited

@Retention(RetentionPolicy.RUNTIME)

public @interface MyInherited {

}

測試類代碼如下:

@MyInherited

public class TestA {

public static void main(String[] args) {

System.out.println(TestA.class.getAnnotation(MyInherited.class));

System.out.println(TestB.class.getAnnotation(MyInherited.class));

System.out.println(TestC.class.getAnnotation(MyInherited.class));

}

}

class TestB extends TestA {

}

class TestC extends TestB {

}

運行結果為:

@MyInherited()

@MyInherited()

@MyInherited()

@Repeatable

@Repeatable 注解是 Java 8 新增加的,它允許在相同的程序元素中重復注解,在需要對同一種注解多次使用時,往往需要借助 @Repeatable 注解。Java 8 版本以前,同一個程序元素前最多只能有一個相同類型的注解,如果需要在同一個元素前使用多個相同類型的注解,則必須使用注解“容器”。

例 4

Java 8 之前的做法:

public @interface Roles {

Role[] roles();

}

public @interface Roles {

Role[] value();

}

public class RoleTest {

@Roles(roles = {@Role(roleName = "role1"), @Role(roleName = "role2")})

public String doString(){

return "這是C語言中國網Java教程";

}

}

Java 8 之后增加了重復注解,使用方式如下:

public @interface Roles {

Role[] value();

}

@Repeatable(Roles.class)

public @interface Role {

String roleName();

}

public class RoleTest {

@Role(roleName = "role1")

@Role(roleName = "role2")

public String doString(){

return "這是C語言中文網Java教程";

}

}

不同的地方是,創建重復注解 Role 時加上了 @Repeatable 注解,指向存儲注解 Roles,這樣在使用時就可以直接重復使用 Role 注解。從上面例子看出,使用 @Repeatable 注解更符合常規思維,可讀性強一點。

兩種方法獲得的效果相同。重復注解只是一種簡化寫法,這種簡化寫法是一種假象,多個重復注解其實會被作為“容器”注解的 value 成員的數組元素處理。

@Native

使用 @Native 注解修飾成員變量,則表示這個變量可以被本地代碼引用,常常被代碼生成工具使用。對于 @Native 注解不常使用,了解即可。

總結

以上是生活随笔為你收集整理的c JAVA 注解,Java元注解作用及使用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 成人av高清 | 91精品国产欧美一区二区 | 国产做受麻豆动漫 | 一级二级毛片 | 亚洲欧美日韩成人在线 | 日韩理论片在线观看 | 99热这里只有精品首页 | 久操影视| 午夜天堂精品久久久久 | 中文字幕有码在线观看 | 韩国电影大尺度在线观看 | 国产女教师一区二区三区 | 最近中文字幕免费 | 涩涩av| xxx69美国 | 国产女同在线观看 | 美女福利影院 | 手机成人在线 | 亚洲国产精品成人 | 毛片在线视频 | 成人欧美一区二区三区黑人孕妇 | 娇小tube性极品娇小 | 婷婷午夜精品久久久久久性色av | 天天撸天天操 | 国产女上位 | 亚洲制服丝袜在线播放 | 国产久草视频 | 日日干综合 | 欧美伊人网 | 欧美黑人猛交 | 噼里啪啦国语高清 | 国产精品无码久久av | 亚洲永久视频 | 老妇荒淫牲艳史 | 亚洲AV无码精品色毛片浪潮 | 成年女人18级毛片毛片免费 | 国产精品无码免费在线观看 | 色婷婷av国产精品 | 国产午夜在线视频 | 91成人观看 | 青青草视频观看 | 一区二区三区高清在线 | 欧美一区三区二区在线观看 | 成人91视频 | 香蕉在线播放 | 日本高清中文字幕 | 久久久午夜精品 | 欧美午夜网站 | 丰满尤物白嫩啪啪少妇 | 91精品国产一区 | 免费看国产黄色 | 99热这里有精品 | 欧美日韩一卡 | 最新天堂av| 美女国产毛片a区内射 | 精品综合网| 欧美亚洲一 | 韩国黄色一级片 | 极品销魂美女少妇尤物 | 日韩精品视频网 | 暖暖免费观看日本版 | 97在线播放 | 9久9久9久女女女九九九一九 | 国产福利在线导航 | 男女草逼| 操皮视频 | 黑人极品videos精品欧美裸 | 青青草十七色 | 欧美成人一级视频 | 极品毛片 | 成人一区二区三区仙踪林 | 超碰个人在线 | 男人天堂伊人 | 在线观看 中文字幕 | 欧美日韩国产传媒 | 亚洲搞av | 日韩久久久久久久久久 | 东北少妇露脸无套对白 | 91色视频在线 | 日韩簧片| 成人香蕉视频 | 久久无吗视频 | 少妇被躁爽到高潮无码文 | 亚洲成人精品一区二区 | 日韩欧美国产中文字幕 | 欧美激情自拍偷拍 | 天天鲁 | 欧美福利视频在线观看 | 欧美群交射精内射颜射潮喷 | 插插影视 | 欧美日韩综合精品 | 91微拍| 色爱AV综合网国产精品 | 毛片视频免费 | 99视频在线免费观看 | 久久激情片 | 欧美视频日韩视频 | 久久一二区 | 簧片av|