黑马程序员技术交流社区
标题:
分享:如何用反射得到方法上的注解
[打印本页]
作者:
黄玉昆
时间:
2013-4-26 15:41
标题:
分享:如何用反射得到方法上的注解
今天复习注解的知识,我就在类和方法上都加了注解,并且加了属性,设置的属性值不同,但是我通过获取类的字节码并不能得到方法上的注解,我查看了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
}
}
复制代码
作者:
袁梦希
时间:
2013-4-26 15:45
抢个沙发再说
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2