您好,登錄后才能下訂單哦!
本文是《Java中注解學習系列教程》第三篇文章
在前兩篇中我們學習了注解的定義、JDK內置注解、注解分類及自定義注解的寫法。
本文咱們將學習:
1:自定義注解一些說明
2:自定義注解怎么使用
3:怎么解析自定義注解
一:自定義注解一些說明:
自定義注解的時候,內部成員可被允許的類型又有哪些呢?
1:基本類型(Java中8中基本類型)
2:stirng類型
3:class
4:其他注解
5:枚舉類
6:以上五類的數組
如下圖:
Java官方文檔(https://docs.oracle.com/javase/specs/jls/se8/html/jls-9.html#jls-9.6.1)原文如下:
類型舉例:
需要說明的:
1:如果注解只有一個成員時候,成員名稱必須為value
2:注解類可以沒有成員,沒有成員的注解為:標識注解
二:自定義注解的使用
說明:自定義注解根據其使用范圍使用。
如MyAnnotation1這個自定義注解
使用范圍是是method和field上。
我們就在method的使用該注解:
語法是:
注解名稱(成員名稱 = 成員值,成員名稱2 = 成員值2)
如下圖:
三:注解解析
在使用注解的時候,使用的反射處理的。
public?class?MyAnnotation1Test?{ ????public?static?void?main(String[]?args)?{ ????????try?{ ??????????//1:使用類加載器加載類 ????????????Class?clazz?=?Class.forName("MyAnnotation1PoJo"); ????????????//2:在對于的類上是否存在對于注解 ????????????//獲取方法上是否有注解 ????????????for(Method?method?:?clazz.getMethods()){ ????????????????boolean?isMothExistMyAnnotation1?=?method.isAnnotationPresent(MyAnnotation1.class); ????????????????if(isMothExistMyAnnotation1){ ????????????????????//3:如果存在。就獲取 ????????????????????MyAnnotation1?myAnnotation1?=?(MyAnnotation1)method.getDeclaredAnnotation(MyAnnotation1.class); ????????????????????System.out.println("==>:方法"+method.getName()+"有注解。值為:"+myAnnotation1.value()); ????????????????}else{ ????????????????????System.out.println("==>:方法"+method.getName()+"無注解"); ????????????????} ????????????} ????????}catch?(Exception?e){ ????????????e.printStackTrace(); ????????} ????} }
注:關于反射方面的學習。在后期,凱哥也會出相應的學習教程。
我們查看運行后的結果:
可以正常解析出自定義注解的值。
下節預告:在下一節中,凱哥將通過自定義注解實現excel的導出功能
聲明:本文由凱哥Java系列教程中Java注解講解第三篇文章。
本文出處:http://www.kaigejava.com/article/detail/441
凱哥博客:www.kaigejava.com
凱哥公眾號:凱哥Java(kaigejava)
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。