大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學習攻略 Java學習 初學者學編程Java注解的使用

初學者學編程Java注解的使用

更新時間:2020-07-24 16:20:26 來源:動力節點 瀏覽2417次

一,基本概念

Java注解是JDK5.0引入的注釋機制,可以被使用在類,方法,參數等地方中,并且可以通過Java的反射機制獲取注解中的內容,

注解相當于標簽,可以標識方法,類或屬性具有某些特征,在編譯器生成的類文件時,可以被嵌入到字節碼中。另外用戶可以自

定義注解,完成定制化的開發,尤其是在利用springboot進行項目開發時,我們會經常使用注解管理spring容器的bean,從而大大

提高了開發的效率。

二,常用注解

在開發過程中,我們可以經常看到一些內置的注解:

 Override:用于校驗該方法是否是重載方法,如果不是重載方法,而且還是使用這個注解則會報錯。

 Deprecated:用于過時的用法,如果繼續使用,編譯器會給出警告

 SuppressWarnings:用于指示編譯器忽略注解中聲明的警告

在編寫自定義注解時,也會使用一些元注解:

1, Retention:定義了注解的保留策略(RetentionPolicy)

@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.ANNOTATION_TYPE)
public?@interface?Retention?{
????/**
?????*?Returns?the?retention?policy.
?????*?@return?the?retention?policy
?????*/
????RetentionPolicy?value();
}

其中RetentionPolicy是一個枚舉類型,共有三種枚舉值

(1)CLASS:此注解的缺省行為,表明在程序運行期間,注解可以被編譯器保存在類文件中,但不會被虛擬機保留。

(2)RUNTIME:表明在程序運行期間,既可以被編譯器保存在類文件中,也被虛擬機保留,所以注解的內容可以通過反射機制讀取

(3)SOURCE:注解會被編譯器丟棄

2, Target:定義了注解的作用目標

@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.ANNOTATION_TYPE)
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是一個枚舉類型,并且表明 Target注解擁有的是枚舉類型的數組,可以被指定多個值。

(1)TYPE:允許作用在類,接口或者枚舉聲明上

(2)FIELD:允許作用在屬性字段上

(3)METHOD:允許作用在方法上

(4)PARAMETER:允許作用在參數上

(5)CONSTRUCTOR:允許作用在構造器上

(6)LOCAL_VARIABLE:允許作用在本地變量上

(7)ANNOTATION_TYPE:允許作用在注解類型上

(8)PACKAGE:允許作用在包上

JDK1.8之后,新增TYPE_PARAMETER和TYPE_USE兩個屬性

(9)TYPE_PARAMETER:允許作用在類型參數上

(10)TYPE_USE:允許作用在使用類型的地方上

3, Documented定義注解可以包含在javadoc中

4, Inherited:表明注解可以被子類集成使用

三,自定義注解

1,使用關鍵字 interface進行自定義注解,注解內容可以指定注解屬性的類型,缺省值等

@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD,?ElementType.FIELD})
public?@interface?MyAnnotation?{

????int?id()?default?0;

????String[]?value();
}

自定義的注解MyAnnotation包含id和value兩個屬性,其中屬性id的類型為int,且缺省值為0,屬性value的類型為String數組。

注意,在聲明屬性時,屬性名后跟的小括號一定要加上。 MyAnnotation表明可以被使用在方法或屬性字段上,并且被編譯器保存在類文件中,

一直駐留在JVM虛擬機中,所以可以通過反射訪問到注解中的內容。

2,使用方法

public?class?User?{
???@MyAnnotation(value?=?{"male",?"female"})
????public?void?getUser(String?name,?int?age)?{

????????System.out.println("user:?["?+?name?+?","?+?age?+?"]");
????}
}

@MyAnnotation被使用在getUser方法上,并且指定注解的vlue屬性值為male和female

3,利用反射獲取注解

public?class?MyAnnotationTest?{
????public?static?void?main(String[]?args)?throws?Exception?{
????????User?user?=?new?User();
????????//通過返回獲取實例
????????Class?userClass?=?User.class;

????????Method?method?=?userClass.getMethod("getUser",?String.class,?int.class);
????????//利用反射調用方法
????????method.invoke(user,?"Rose",?24);

????????//獲取方法上的MyAnnotation注解
????????if?(method.isAnnotationPresent(MyAnnotation.class))?{

????????????//獲取方法上的注解實例
????????????MyAnnotation?annotation?=?method.getAnnotation(MyAnnotation.class);

????????????String[]?value?=?annotation.value();

????????????for?(String?v?:?value)?{
????????????????System.out.printf("%s?",?v);
????????????}
????????}?else?{
????????????System.out.println("沒有應用MyAnnotation注解");
????????}

????????System.out.println();

????????//獲取方法上的所有注解
????????Annotation[]?annotations?=?method.getAnnotations();
????????for?(Annotation?annotation?:?annotations)?{
????????????System.out.println(annotation);
???????}

????}
}

利用Java的反射機制獲取方法上的注解內容,通過Method類的getAnnotation方法可以獲取到指定的注解,getAnnotations方法可以獲取到方法上的所用注解。

運行結果:

初學者學編程Java注解的使用

四,小結

注解相當于標簽,利用反射機制可以獲取到注解中的內容,可以作用在類,方法,參數等地方,使其具有某些屬性,通過注解對程序進行標識來實現特定的處理,讓編寫的程序更加簡潔。

Java技術內容

Java8新特性注解:http://www.dabaquan.cn/javafeatures/1126.html

什么是Java注解:http://www.dabaquan.cn/tutorial_java_advance/1055.html

以上就是動力節點java培訓機構的小編針對“初學者學編程Java注解的使用”的內容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業老師隨時為你服務。

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 久久综合久久鬼色 | 国产视频一区二 | 九九热观看视频 | 奇米影视第四色777 奇米影视第四色7777 | 亚洲码和乱人伦中文一区 | 四虎视频在线 | 四虎国产永久免费久久 | 久久精品国产一区二区 | 欧美精品国产一区二区 | 四虎亚洲国产成人久久精品 | 天天色天天 | 日本不卡免费新一区二区三区 | 午夜精品亚洲 | 尹人香蕉99久久综合网站 | 青青草久热精品视频在线观看 | 久久频这里精品香蕉久久 | 夜夜摸夜夜操 | 欧美久久久久久久一区二区三区 | 国语偷拍视频在线观看 | 久久99精品综合国产首页 | 中文字幕在线观看一区二区 | 国产成人三级 | 一本色道久久88加勒比—综合 | 欧美肥婆videos另类 | 2022国产成人综合精品 | 热99精品| 99热这里只有成人精品国产 | 激情国产白嫩美女在线观看 | 欧美精品影视 | 色香蕉在线 | 国产成人精品综合网站 | 国产操美女 | 久久美女免费视频 | 深夜a| 国产99在线a视频 | 国产亚洲精品九九久在线观看 | 欧美成人免费在线视频 | 梦想成为魔法少女在线观看 | 不卡中文字幕在线观看 | 水浒传删减剧情在线观看 | 国产一区二区日韩欧美在线 |