A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黄玉昆 黑马帝   /  2013-4-26 15:41  /  1308 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

今天复习注解的知识,我就在类和方法上都加了注解,并且加了属性,设置的属性值不同,但是我通过获取类的字节码并不能得到方法上的注解,我查看了Class这个类中的方法,发现只有得到类的注解,但是方法的注解都得不到,然后我又查看了Method这个类,发现其中有getAnnotation的方法,尝试了一下,发现中了,哈哈,分享给大家,如果大家有更简单的方法获得各个成员上的注解的属性,请也分享一下,谢谢
  1. package cn.itcast.test.annotation;

  2. import java.lang.annotation.ElementType;
  3. import java.lang.annotation.Retention;
  4. import java.lang.annotation.RetentionPolicy;
  5. import java.lang.annotation.Target;

  6. //创建注解类
  7. @Retention(RetentionPolicy.RUNTIME)
  8. @Target({ElementType.TYPE, ElementType.METHOD})
  9. public @interface YuAnnotation {

  10.         //定义属性
  11.         String color();
  12. }
复制代码
//测试注解类
  1. import java.lang.reflect.Method;

  2. import org.junit.Test;

  3. @YuAnnotation(color = "red")
  4. public class AnnotationDemo {

  5.         /**
  6.          * 注解的测试
  7.          * 元注解:Retention
  8.          *                   Target
  9.          */
  10.         @YuAnnotation(color = "blue")
  11.         public static void method(){
  12.                 System.out.println("Method");
  13.         }
  14.         @Test
  15.         public void test1() throws Exception{
  16.                 //通过反射获取注解,就可以得到类上的注解
  17.                 YuAnnotation yanntation =
  18.                                 AnnotationDemo.class.getAnnotation(YuAnnotation.class);
  19.                 System.out.println(yanntation.color());//red
  20.                 //通过反射获取类中的方法
  21.                 Class clazz = Class.forName("cn.itcast.test.annotation.AnnotationDemo");
  22.                 Method method = clazz.getMethod("method", null);
  23.                 //通过方法获取注解
  24.                 YuAnnotation yanntation1 = method.getAnnotation(YuAnnotation.class);
  25.                 System.out.println(yanntation1.color());//blue
  26.         }
  27. }
复制代码

1 个回复

倒序浏览
抢个沙发再说
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马