在java中,如果我们对一个类或者方法加了注解,那么是可以获取到这个注解的属性值的,最明显的例子就是在springMVC中,当我们使用@RequestMapping(value="")的时候,spring会将我们填写的value值当作路径存放在map结构中供我们访问。那么这一点是如何实现的呢?
非常简单,我们只要使用getAnnotation这个方法就可以了,我们来看一个例子就明白了:
import java.lang.annotation.*;
/**
* 这是自定义注解的类
*/
@Target({ElementType.TYPE,ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface MyRequestMapping
{
String value(); // 这是注解的一个属性字段,也就是我们使用注解时填写在括号里的参数
}
现在我们在TestController中使用这个注解:
@MyRequestMapping("/test")
public void test()
{
System.out.println("=============test==============");
}
我们只需要通过下面的代码,就可以获取到我们输入的value的值了
Class<?> c = TestController.class;
MyRequestMapping baseRequestMapping = c.getAnnotation(MyRequestMapping.class);
System.out.println(baseRequestMapping.value); // 输出value的值
注意!这里的Class<?>中的<?>是必须写的,你可以把?改成要限定的类型,但是必须要写这个泛型限定才行,不然java编译会报错。
本文介绍了Java中如何通过反射获取加注解的类及其注解属性值。以一个实例说明,通过调用getAnnotation方法可以简单实现这一功能,例如在SpringMVC中注解的value值会被存入map供访问。详细步骤包括在类中使用注解,然后通过指定泛型限定的Class<?>调用getAnnotation避免编译错误。
937

被折叠的 条评论
为什么被折叠?



