自定义注解类:
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
//只允许该注解可以标注类、方法。
@Target({ElementType.TYPE,ElementType.METHOD})
//希望这个注解可以被反射。
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotation {
String value () default "北京大兴区";
}
自定义注解测试类:
@MyAnnotation
public class Study {
public static void main(String[] args) {
}
@MyAnnotation
public void doSome(){
System.out.println("wwww");
}
}
通过注解获取注解和注解属性的类:
public class Main {
public static void main(String[] args) throws Exception {
//获取类
Class c = Class.forName("com.company.Study");
//判断类上面是否有@MyAnnotation注解
System.out.println(c.isAnnotationPresent(MyAnnotation.class));//ture
if (c.isAnnotationPresent(MyAnnotation.class)){
//获取该注解
MyAnnotation myAnnotation = (MyAnnotation) c.getAnnotation(MyAnnotation.class);
System.out.println("类上面的注解对象" + myAnnotation);
//获取注解对象的属性怎么办?和调接口没区别。
String s = myAnnotation.value();
System.out.println(s);
}
}
}