自定義註解:
@Target(FIELD)
@Retention(RUNTIME)
@Documented
public @interface Ano {
public String name() default "ycx";
public String value();
}
@Documented // 代表這個註解,可以被javadoc 處理的(加不加都行)
@Retention(RetentionPolicy.RUNTIME)
// RetentionPolicy 生命週期,一共有三個
// SOURCE 只留在源碼,編譯好後的代碼是不有該註解的,該註解一旦編譯就不存在了 ;
// class 只停留在字節碼,運行時不會有;
// RUNTIME 運行時需要反射來獲取該註解
@Target({ElementType.TYPE,ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER, ElementType.CONSTRUCTOR, ElementType.LOCAL_VARIABLE, ElementType.PACKAGE, ElementType.ANNOTATION_TYPE})
// 該註解用在地方(方法,參數,類)
使用:
public class test2 {
@Ano(value = "555")
private String value1;
public static void main(String[] args) {
test2 m=new test2();
m.method();
}
public void method() {
Field[] fields = test2.class.getDeclaredFields();
Ano a = fields[0].getAnnotation(Ano.class);
System.out.println(a.name()+","+a.value());
}
}
輸出:
ycx,555