學會使用java自定義註解

Java的註解是Java中非常好用的一個功能點。基本所有的java框架都會用到。在我們日常的工作中,如果善於使用自定義註解,講給我們節省下大量的時間。

學會使用java自定義註解

代碼示例:

import java.lang.annotation.Documented;

import java.lang.annotation.ElementType;

import java.lang.annotation.Inherited;

import java.lang.annotation.Retention;

import java.lang.annotation.RetentionPolicy;

import java.lang.annotation.Target;

@Documented

@Target(ElementType.METHOD)

@Inherited

@Retention(RetentionPolicy.RUNTIME)

public @interface MyDemo{

String author() default 'yunsheng';

}

對自定義註解進行註解的稱為元註解。常用的元註解有四類:

@Documented :表明此註解會被javadoc等類似工具識別,並保留在API文檔中。

@Target:聲明這個註解可使用的範圍。可以打開ElementType看下,分別是:1)類,接口,註解,enum; 2)屬性域;3)方法;4)參數;5)構造函數;6)局部變量;7)註解類型;8)包

@Inherited:繼承。是說如果你在父類上使用了被@Inherited註解的註解A。那麼該類的子類也會繼承該註解A。

@Retention:註解的存在範圍。

有三個範圍:

RetentionPolicy.SOURCE 只存在源碼級別,被編譯器拋棄(@Override就是此類);

RetentionPolicy.CLASS 會被編譯器保留在編譯後的類文件中,但是會被虛擬機丟棄;

RetentionPolicy.RUNTIME 保留在運行時,可以被反射讀取。這個註解還是比較重要的,我們一般是會使用RUNTIME級別,因為我們需要通過反射讀取到這個註解。

使用:

使用起來其實很簡單,就是通過反射拿到註解信息。

如:Method的幾個方法:

isAnnotationPresent(xx.xx.class):方法判斷是否使用了xx註解

getAnnotation(xx.class):獲取具體的註解對象實例

getDeclaredAnnotations():獲取所有註解,注意反射方法中Declared都是獲取自身的,不包括繼承來的。

getAnnotations():獲取包括繼承來的註解。這裡就要看父類的註解是否是可繼承的了。


分享到:


相關文章: