第17篇-JAVA Annotation 註解

第17篇-JAVA Annotation 註解

  • 每篇一句 :真的努力後你會發現自己要比想象的優秀很多

  • 初學心得: 懷着一顆奮鬥不息的心,一切困苦艱辛自當迎刃而解

  • (筆者:JEEP/711)[JAVA筆記 | 時間:2017-05-17| JAVA Annotation註解 ]



1.什麼是註解(Annotation)

Annotation 其實就是代碼裏的特殊標記, 它用於替代配置文件,也就是說,傳統方式通過配置文件告訴類如何運行,有了註解技術後,開發人員可以通過註解告訴類如何運行。在Java技術裏註解的典型應用是:可以通過反射技術去得到類裏面的註解,以決定怎麼去運行類

  • Annotation(註解)就是Java提供了一種元程序中的元素關聯任何信息和着任何元數據(metadata)的途徑和方法

  • Annotion(註解)是一個接口,程序可以通過反射來獲取指定程序元素的Annotion對象,然後通過Annotion對象來獲取註解裏面的元數據

  • Annotation(註解)是JDK5.0及以後版本引入的。它可以用於創建文檔,跟蹤代碼中的依賴性,甚至執行基本編譯時檢查。從某些方面看,annotation就像修飾符一樣被使用,並應用於包、類 型、構造方法、方法、成員變量、參數、本地變量的聲明中

2.基本Annotation

1.@Override: 限定重寫父類方法, 該註解只能用於方法
2.@Deprecated: 用於表示某個程序元素(類, 方法等)已過時
3.@SuppressWarnings: 抑制編譯器警告

3.自定義Annotation

  • 使用@interface定義Annotation

  • 使用Annotation修飾程序中的類、方法、變量、接口等定義,通常我們會把Annotation放在所有修飾符之前

  • 定義帶成員變量的Annotation

  • 爲Annotation的成員變量指定初始值

4.提取Annotation信息

  • Annotation接口來代表程序元素前面的註釋,該接口是所有Annotation類型的父接口

  • AnnotatedElement接口代表程序中可以接受註釋的程序元素

  • 調用AnnotatedElement對象的如下三個方法來訪問Annotation信息:

  • getAnnotation(Class annotationClass):返回該程序元素上存在的、指定類型的註釋,如果該類型的註釋不存在,則返回null

  • Annotation[] getAnnotations():返回該程序元素上存在的所有註釋

  • boolean isAnnotationPresent(Class<? extends Annotation> annotationClass):判斷該程序元素上是否包含指定類型的註釋,存在則返回true,否則返回false

5.Annotation 註解實例

自定義Annotation

1.import java.lang.annotation.Documented;  
2.import java.lang.annotation.ElementType;  
3.import java.lang.annotation.Retention;  
4.import java.lang.annotation.RetentionPolicy;  
5.import java.lang.annotation.Target;  
6./** 
7. * 定義一個註解 
8. */  
9.@Target(ElementType.METHOD) // 這是一個對方法的註解,還可以是包、類、變量等很多東西  
10.@Retention(RetentionPolicy.RUNTIME) // 保留時間,一般註解就是爲了框架開發時代替配置文件使用,JVM運行時用反射取參數處理,所以一般都爲RUNTIME類型  
11.@Documented // 用於描述其它類型的annotation應該被作爲被標註的程序成員的公共API,因此可以被例如javadoc此類的工具文檔化  
12.public @interface OneAnnotation {  
13.    // 定義註解的參數,類型可以爲基本類型以及String、Class、enum、數組等,default爲默認值  
14.    String parameter1() default "";  
15.    int parameter2() default -1;  
16.}

使用註解

1./** 
2. * 一個用到了自定義的註解的類 
3. */  
4.public class OClass {  
5.    @OneAnnotation(parameter1="YES", parameter2=10)  
6.    public void oneMethod () {  
7.    }  
8.}

獲取註解參數

1.import java.lang.reflect.Method;  
2.public class TestDemo {  
3.    public static void main(String[] args) throws Exception {  
4.        // 提取到被註解的方法Method,這裏用到了反射的知識  
5.        Method method = Class.forName("OneClass").getDeclaredMethod("oneMethod");  
6.        // 從Method方法中通過方法getAnnotation獲得我們設置的註解  
7.        OneAnnotation oneAnnotation = method.getAnnotation(OneAnnotation.class);  
8.        // 得到註解的倆參數  
9.        System.out.println(oneAnnotation.parameter1());  
10.        System.out.println(oneAnnotation.parameter2());  
11.    }  
12.}

初學(JAVA Annotation註解 高級階段) 難點: ★★★★★

希望每一篇文章都能夠對讀者們提供幫助與提升,這乃是每一位筆者的初衷


感謝您的閱讀 歡迎您的留言與建議


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章