亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Java > 正文

java語言注解基礎概念詳解

2024-07-13 10:15:29
字體:
來源:轉載
供稿:網友

1、RetentionPolicy.SOURCE:注解只保留在源文件,當Java文件編譯成class文件的時候,注解被遺棄;

2、RetentionPolicy.CLASS:注解被保留到class文件,但jvm加載class文件時候被遺棄,這是默認的生命周期;

3、RetentionPolicy.RUNTIME:注解不僅被保存到class文件中,jvm加載class文件之后,仍然存在;

這3個生命周期分別對應于:Java源文件(.java文件)--->.class文件--->內存中的字節碼。

那怎么來選擇合適的注解生命周期呢?

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

下面來介紹下運行時注解的簡單運用。

獲取注解

你需要通過反射來獲取運行時注解,可以從Package、Class、Field、Method...上面獲取,基本方法都一樣,幾個常見的方法如下:

/**  * 獲取指定類型的注解  */public <A extends Annotation> A getAnnotation(Class<A> annotationType);/**  * 獲取所有注解,如果有的話  */public Annotation[] getAnnotations();/**  * 獲取所有注解,忽略繼承的注解  */public Annotation[] getDeclaredAnnotations();/**  * 指定注解是否存在該元素上,如果有則返回true,否則false  */public Boolean isAnnotationPresent(Class<? extends Annotation> annotationType);/**  * 獲取Method中參數的所有注解  */public Annotation[][] getParameterAnnotations();

要使用這些函數必須先通過反射獲取到對應的元素:Class、Field、Method等。

自定義注解

來看下自定義注解的簡單使用方式,這里先定義3個運行時注解:

// 適用類、接口(包括注解類型)或枚舉 @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.TYPE) public @interface ClassInfo {   String value(); } // 適用field屬性,也包括enum常量 @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.FIELD) public @interface FieldInfo {   int[] value(); } // 適用方法 @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.METHOD) public @interface MethodInfo {   String name() default "long";   String data();   int age() default 27; } 

這3個注解分別適用于不同的元素,并都帶有不同的屬性,在使用注解是需要設置這些屬性值。

再定義一個測試類來使用這些注解:

/**  * 測試運行時注解  */@ClassInfo("Test Class") public class TestRuntimeAnnotation {	@FieldInfo(value = {1, 2}) 	  public String fieldInfo = "FiledInfo";	@FieldInfo(value = {10086}) 	  public int i = 100;	@MethodInfo(name = "BlueBird", data = "Big") 	  public static String getMethodInfo() {		return TestRuntimeAnnotation.class.getSimpleName();	}}

使用還是很簡單的,最后來看怎么在代碼中獲取注解信息:

/**  * 測試運行時注解  */private void _testRuntimeAnnotation() {	StringBuffer sb = new StringBuffer();	Class<?> cls = TestRuntimeAnnotation.class;	Constructor<?>[] constructors = cls.getConstructors();	// 獲取指定類型的注解 	sb.append("Class注解:").append("/n");	ClassInfo classInfo = cls.getAnnotation(ClassInfo.class);	if (classInfo != null) {		sb.append(Modifier.toString(cls.getModifiers())).append(" ") 		        .append(cls.getSimpleName()).append("/n");		sb.append("注解值: ").append(classInfo.value()).append("/n/n");	}	sb.append("Field注解:").append("/n");	Field[] fields = cls.getDeclaredFields();	for (Field field : fields) {		FieldInfo fieldInfo = field.getAnnotation(FieldInfo.class);		if (fieldInfo != null) {			sb.append(Modifier.toString(field.getModifiers())).append(" ") 			          .append(field.getType().getSimpleName()).append(" ") 			          .append(field.getName()).append("/n");			sb.append("注解值: ").append(Arrays.toString(fieldInfo.value())).append("/n/n");		}	}	sb.append("Method注解:").append("/n");	Method[] methods = cls.getDeclaredMethods();	for (Method method : methods) {		MethodInfo methodInfo = method.getAnnotation(MethodInfo.class);		if (methodInfo != null) {			sb.append(Modifier.toString(method.getModifiers())).append(" ") 			          .append(method.getReturnType().getSimpleName()).append(" ") 			          .append(method.getName()).append("/n");			sb.append("注解值: ").append("/n");			sb.append("name: ").append(methodInfo.name()).append("/n");			sb.append("data: ").append(methodInfo.data()).append("/n");			sb.append("age: ").append(methodInfo.age()).append("/n");		}	}	System.out.print(sb.toString());}

所做的操作都是通過反射獲取對應元素,再獲取元素上面的注解,最后得到注解的屬性值。

看一下輸出情況,這里我直接顯示在手機上:

java語言,注解

總結

以上就是本文關于java語言注解基礎概念詳解的全部內容,希望對大家有所幫助。感興趣的朋友可以繼續參閱本站其他相關專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲综合在线播放| 91人成网站www| 久久6免费高清热精品| 国产精品99久久99久久久二8| 国产成人激情视频| 亚洲自拍小视频| 欧美日韩亚洲视频一区| 国产一区二区黑人欧美xxxx| 日韩av在线电影网| 在线观看国产精品日韩av| 亚洲人成伊人成综合网久久久| 日韩精品视频在线播放| 不卡伊人av在线播放| 亚洲国产精品人人爽夜夜爽| 久久视频免费观看| 热久久99这里有精品| 一区二区在线免费视频| 国产精品中文字幕久久久| 国产+成+人+亚洲欧洲| 亚洲二区中文字幕| 日本中文字幕不卡免费| 午夜精品一区二区三区在线播放| 久久久久女教师免费一区| 最近的2019中文字幕免费一页| 亚洲а∨天堂久久精品喷水| 亚洲qvod图片区电影| 国产亚洲精品成人av久久ww| 操日韩av在线电影| 欧美精品国产精品日韩精品| 国内揄拍国内精品少妇国语| 欧美理论在线观看| 国产一区二区av| 91老司机精品视频| 亚洲r级在线观看| 日韩成人中文字幕在线观看| 欧美综合第一页| 久久精品99久久久久久久久| 欧美日韩亚洲网| 性欧美办公室18xxxxhd| 亚洲色图综合网| 亚洲国产欧美久久| 97在线观看免费| 欧美日韩国产在线播放| 成人精品一区二区三区| 欧美亚洲午夜视频在线观看| 91在线精品视频| 国产精品一区久久| 国产精品99久久久久久久久| 亚洲成人av中文字幕| 色偷偷av一区二区三区乱| 日韩欧美综合在线视频| 欧美日韩激情视频8区| 日韩小视频在线观看| 最近2019中文字幕大全第二页| 久久伊人免费视频| 久久精品视频在线观看| 国产精品久久久| 97婷婷大伊香蕉精品视频| 欧美在线精品免播放器视频| 日韩电视剧在线观看免费网站| 久久国产精品久久久久久久久久| 91地址最新发布| 亚洲国产91精品在线观看| 国产精品户外野外| 91经典在线视频| 国产精品日韩电影| 亚洲精品99久久久久| 美乳少妇欧美精品| 国产精品一区二区三区毛片淫片| 97人人爽人人喊人人模波多| 精品亚洲va在线va天堂资源站| 欧美在线影院在线视频| 亚洲 日韩 国产第一| 精品国产欧美一区二区三区成人| 亚洲第一精品夜夜躁人人爽| 久久国产精品网站| 欧美又大又粗又长| 日韩电影中文字幕一区| 国语自产精品视频在线看| 亚洲人成五月天| 亚洲精品456在线播放狼人| 欧美性猛交xxxx乱大交| 久久免费精品视频| 国产精品自产拍在线观看中文| 18一19gay欧美视频网站| 久久亚洲综合国产精品99麻豆精品福利| 欧美一区二粉嫩精品国产一线天| 成人久久久久久| 国产精品一区二区性色av| 欧美精品在线极品| 欧美性20hd另类| 国内精品久久久久久影视8| 久久好看免费视频| 国产99久久精品一区二区| 久久久久久中文字幕| 欧美日韩亚洲91| 亚洲女人初尝黑人巨大| 久久精品视频在线| 黄色成人av网| 九九热最新视频//这里只有精品| 97婷婷大伊香蕉精品视频| 精品视频在线观看日韩| 亚洲成人亚洲激情| 日韩av电影在线免费播放| 日本一欧美一欧美一亚洲视频| 久久精品国产免费观看| 91人人爽人人爽人人精88v| 国产精品国模在线| 亚洲国产精品yw在线观看| 成人久久久久久| 国内揄拍国内精品少妇国语| 97色在线视频观看| 伊是香蕉大人久久| 亚洲精品国产成人| 91沈先生作品| 日韩av在线不卡| 亚洲视频网站在线观看| 欧美丝袜第一区| 午夜精品美女自拍福到在线| 国产精品视频男人的天堂| 91在线视频导航| 日韩av电影在线网| 国产一区二区三区高清在线观看| 久久久久久久网站| 97在线看福利| 国产精品va在线播放| 欧美二区乱c黑人| 精品国内亚洲在观看18黄| 国产精品免费观看在线| 91在线免费视频| 久久久精品久久久久| 欧美亚洲第一页| 欧美亚洲激情视频| 日韩av在线资源| 亚洲成人久久久| 国产精品入口日韩视频大尺度| 91久久久久久久| 亚洲黄色www网站| 亚洲免费视频在线观看| 日韩影视在线观看| 成人一区二区电影| 欧美日韩另类字幕中文| 欧美日韩在线免费| 亚洲欧洲视频在线| 国产欧美久久一区二区| 九九热这里只有在线精品视| 久久91亚洲精品中文字幕| 97久久久免费福利网址| 亚洲天堂日韩电影| 亚洲欧洲成视频免费观看| 精品综合久久久久久97| 亚洲一区二区三区成人在线视频精品| 欧美午夜久久久| 8090理伦午夜在线电影| 国产欧美精品在线播放| xxxx欧美18另类的高清| 亚洲国产精品热久久| 亚洲香蕉伊综合在人在线视看| 九九热这里只有精品6| 91视频国产高清| 欧美中文在线字幕| 日韩av在线影视| 欧美亚洲激情在线| 久久久国产91|