今天复习注解的知识,我就在类和方法上都加了注解,并且加了属性,设置的属性值不同,但是我通过获取类的字节码并不能得到方法上的注解,我查看了Class这个类中的方法,发现只有得到类的注解,但是方法的注解都得不到,然后我又查看了Method这个类,发现其中有getAnnotation的方法,尝试了一下,发现中了,哈哈,分享给大家,如果大家有更简单的方法获得各个成员上的注解的属性,请也分享一下,谢谢- package cn.itcast.test.annotation;
- import java.lang.annotation.ElementType;
- import java.lang.annotation.Retention;
- import java.lang.annotation.RetentionPolicy;
- import java.lang.annotation.Target;
- //创建注解类
- @Retention(RetentionPolicy.RUNTIME)
- @Target({ElementType.TYPE, ElementType.METHOD})
- public @interface YuAnnotation {
- //定义属性
- String color();
- }
复制代码 //测试注解类- import java.lang.reflect.Method;
- import org.junit.Test;
- @YuAnnotation(color = "red")
- public class AnnotationDemo {
- /**
- * 注解的测试
- * 元注解:Retention
- * Target
- */
- @YuAnnotation(color = "blue")
- public static void method(){
- System.out.println("Method");
- }
- @Test
- public void test1() throws Exception{
- //通过反射获取注解,就可以得到类上的注解
- YuAnnotation yanntation =
- AnnotationDemo.class.getAnnotation(YuAnnotation.class);
- System.out.println(yanntation.color());//red
- //通过反射获取类中的方法
- Class clazz = Class.forName("cn.itcast.test.annotation.AnnotationDemo");
- Method method = clazz.getMethod("method", null);
- //通过方法获取注解
- YuAnnotation yanntation1 = method.getAnnotation(YuAnnotation.class);
- System.out.println(yanntation1.color());//blue
- }
- }
复制代码 |
|