標籤:
一.自訂註解類
Target 限制註解的使用範圍
TYPE,
//用於類,介面,枚舉但不能是註解
FIELD,
//欄位上,包括枚舉值
METHOD,
//方法,不包括構造方法
PARAMETER,
//方法的參數
CONSTRUCTOR,
//構造方法
LOCAL_VARIABLE,
//本地變數或catch語句
ANNOTATION_TYPE,
//註解類型(無資料)PACKAGE//Java包
Retention 處理策略
SOURCE,
//此類型會被編譯器丟棄
CLASS,
//此類型註解會保留在class檔案中,但JVM會忽略它
RUNTIME
//此類型註解會保留在class檔案中,JVM會讀取它
@Target(ElementType.FIELD)@Retention(RetentionPolicy.RUNTIME)public @interface Name { String value() default "蘋果"; }
二.使用註解
public class AnnottionTest { @Name("香蕉") private String name ; public String getName() { return name; } public void setName(String name) { this.name = name; } }
三.註解處理類
public class Util { public static void getInfo(Class<?> clazz){ String strName=" 名稱:"; Field[] fields = clazz.getDeclaredFields(); for(Field field :fields){ if(field.isAnnotationPresent(Name.class)){ Name name = (Name) field.getAnnotation(Name.class); strName=strName+name.value(); System.out.println(strName); } } } @Test public void fun(){ Util.getInfo(AnnottionTest.class); }}
java 自訂註解