简单说明
可以利用反射获取注解中的值,通过反射可以获取一个类的Class对象,通过该对象可以获取注解,获取到对应的注解后,就可以获取注解中的值,具体代码实现如下:
public class AnnotationDemo {
public static void main(String[] args) throws NoSuchFieldException {
// 获取类的Class对象
Class clazz = Demo.class;
// 获取类上的注解
CustomerAnnotation classAnnotation =
(CustomerAnnotation) clazz.getAnnotation(CustomerAnnotation.class);
// 获取注解上的值
String classValue = classAnnotation.value();
String[] classDesc = classAnnotation.desc();
System.out.println("类上注解的值 value=" + classValue +
" desc=" + Arrays.toString(classDesc));
// 获取属性
Field field = clazz.getDeclaredField("name");
// 获取属性上的注解
CustomerAnnotation fieldAnnotation =
(CustomerAnnotation) field.getAnnotation(CustomerAnnotation.class);
// 获取注解上的值
String fieldValue = fieldAnnotation.value();
String[] fieldDesc = fieldAnnotation.desc();
System.out.println("类上注解的值 value=" + fieldValue +
" desc=" + Arrays.toString(fieldDesc));
}
}
@CustomerAnnotation(value = "classValue")
class Demo {
@CustomerAnnotation(value = "fieldValue",desc = {"desc1","desc2"})
private String name;
}
@Target({ElementType.TYPE, ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@interface CustomerAnnotation {
String value();
String[] desc() default "defaultValue";
}
注:不理解注解和反射的可以看以下两篇文章:
1.简单介绍Java中的注解
2.简单介绍java中的反射