1.注解
注解的解析
通过反射技术,来获取注解中的属性的值
注意:想要对注解进行解析,前提条件@Retention(RetentionPolicy.RUNTIME)
1.获取类上面的注解的属性值
public class Demo01 {
public static void main(String[] args) throws Exception {
//使用反射技术获取类上面的注解的属性值:tom,18
//获取字节码文件对象
Class clazz = Class.forName("com.annotation.A");
//获取类上面的注解对象
//Annotation annotation = clazz.getAnnotation(MyAnno1.class);
MyAnno1 myanno = (MyAnno1)clazz.getAnnotation(MyAnno1.class);
System.out.println(myanno);
//获取name和age的属性值
String name = myanno.name();
int age = myanno.age();
System.out.println(name + "..." + age);
}
}
@MyAnno1(name="tom", age=18)
class A {
}
2.获取方法上面的注解的属性值
public class Demo02 {
public static void main(String[] args) throws Exception {
//获取字节码文件对象
Class clazz = Class.forName("com.annotation.B");
//获取show方法对象
Method method = clazz.getMethod("show");
//获取方法上的注解对象
MyAnno1 myAnno1 = method.getAnnotation(MyAnno1.class);
//获取name和age属性值
String name = myAnno1.name();
int age = myAnno1.age();
System.out.println(name + "..." + age);
}
}
class B {
@MyAnno1(name="jerry",age=19)
public void show() {
}
}
3.获取属性上面的注解的属性值?
public class Demo03 {
public static void main(String[] args) throws Exception {
//获取字节码文件对象
Class clazz = Class.forName("com.annotation.C");
//获取name属性对象
Field field = clazz.getDeclaredField("name");
//获取name属性上的注解对象
MyAnno1 myAnno1 = field.getAnnotation(MyAnno1.class);
//获取name和age属性值
String name = myAnno1.name();
int age = myAnno1.age();
System.out.println(name + "..." + age);
}
}
class C {
@MyAnno1(name="rose",age=20)
private String name;
}