2 mr  su Mr__su 于 2016.04.29 09:53 提问

如何得到一个方法上面的注解

如题,我自定义了一个注解类 @ AuditAttribute

我在java实体类的get方法上面加上这个注解,然后用
Annotation annotation = f.getAnnotation(AuditAttribute.class);
Annotation[] methodAnnotations = method.getAnnotations();
这样来取,不管是取多个还是取一个,取到的总是null 这是为什么?

5个回答

fk002008
fk002008   2016.04.29 18:18
已采纳

这个是我写的你看看
public class Person {

private String id ;
@Scope("prototype")
public String getId(){
return id ;
}

}

public static void test(Object obj){
Method[] method = obj.getClass().getDeclaredMethods();// 获取所有方法
for (java.lang.reflect.Method m : method) {

 System.out.println(m.getName());

 if (m.getName().startsWith("get")) {// 取方法名为get...的

  if(null != m.getDeclaredAnnotations()){
      System.out.println("--111--"+m.getName()); 
      Annotation[] ano = m.getDeclaredAnnotations();
      System.out.println("--222--"+ano[0]); 

 }


     public static void main(String[] args) throws NoSuchMethodException, SecurityException{
       test(new Person());
}

    -------------------------打印结果
    getId

--111--getId
--222--@org.springframework.context.annotation.Scope(proxyMode=DEFAULT, value=prototype)

fk002008
fk002008   2016.04.29 10:00

那是因为你用错了

getDeclaredAnnotations()就可以了

你取这个method的时候使用的是getDeclaredMethod
不是 getMethod吧
这个注解和method的获取是类似的

Mr__su
Mr__su 好像还是来不起,下面贴个代码看看
大约 2 年之前 回复
zjysource
zjysource   2016.04.29 11:37
ZGZ1002
ZGZ1002   2016.04.29 13:00

请问你的问题解决了吗?

Mr__su
Mr__su   2016.04.29 13:59

Method[] method = obj.getClass().getMethods();// 获取所有方法
for (java.lang.reflect.Method m : method) {

System.out.println(m.getName());

if (m.getName().startsWith("get")) {// 取方法名为get...的

if(null != m.getAnnotation(AuditAttribute.class)){

System.out.println("--111--"+m.getName());

} if(null != m.getDeclaredAnnotations()){

System.out.println("--111--"+m.getName()); }

Object value = m.invoke(obj);// 执行

String fildName = m.getName(); beanMap.put(fildName, value); } }

fk002008
fk002008 你不妨使用单个的getDeclaredMethod和单个的getDeclaredAnnotations试验下
大约 2 年之前 回复
fk002008
fk002008 Method[] method = obj.getClass().getMethods();// 获取所有方法 把这个东西用getDeclaredMethod写
大约 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
注解内容提取(类上、方法上)
了解自定义注解详细解释开头总结(具体代码在下面)方法上的注解内容可以直接获取、类上的需要强转方法上自定义注解内容提取/** * Log代表method所在类 */ String doType = method.getAnnotation(Log.class).doType();类上自定义注解内容提取/** * clazz代表有Module这个自定义注解的类 */ String value =
Java 使用反射获取类、方法、属性上的注解
有的时候我们想使用反射获取某个类的注解、方法上的注解、属性上的注解。 下面是一个简单的例子。里面包括了上面提到的三个点。
获取类的方法上的所有方法上的注解(二)
接着上面的例子,实现获取具体注解的值 Anno.java注解的实现类,这里加入了属性value,便于在使用的Anno注解的时候可以,如此使用@Anno("coding"),这里还设置了注解的默认值。 其实也可以设置其他的属性。 package com.robot.test; import java.lang.annotation.ElementType; import java.l
反射获得属性方法上面的注解
public static Map transBean2Map(Object obj) {              if(obj == null){               return null;           }                   Map map = new HashMap();           try {               BeanI
Java获取类、方法、属性上的注解
获取某个类的注解有3个方法Class.getAnnotations()、Class.getAnnotation(Class< A > annotationClass)、Class.getDeclaredAnnotations(); 获取某个方法的注解,跟类一样,也是3中方式
spring aop获取目标对象的方法对象及方法上的注解
spring aop获取目标对象的方法对象(包括方法上的注解) 这两天在学习权限控制模块。以前看过传智播客黎活明老师的巴巴运动网视频教程,里面就讲到权限控制的解决方案,当时也只是看看视频,没有动手实践,虽说看过几遍,可是对于系统中的权限控制还是很迷茫,所以借着这次机会动手实践一下。     黎活明老师的巴巴运动网使用的框架是struts + spring + jpa,大致思路是
利用反射获取类或者方法或者字段上的注解的值
从JDK1.5之后,注解在各大框架上得到了广泛的应用。下面这个例子中,你可以判断一个类或者方法或者字段上有没有注解,以及怎么获取上面的注解值。话不多说,代码如下: AnnotationTest01.java package com.zkn.newlearn.annotation; import java.lang.annotation.ElementType; import java.l
AOP中获得自定义注解对象
1.自定义注解 import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; /** * 横切逻辑注解 * @author xd
Java注解(获取注解的值)
Name.java import java.lang.annotation.Retention; import java.lang.annotation.Target; import java.lang.annotation.ElementType; import java.lang.annotation.RetentionPolicy; @Target(Elemen
注解的定义以及获取注解里面的方法,变量
转载: 1、Annotation的工作原理:2、@Override注解:3、@Deprecated注解:4、@SuppressWarnings注解:5、自定义注解:5.1、添加变量:5.2、添加默认值:5.3、多变量使用枚举:5.4、数组变量:6、设置注解的作用范围:6.1、在自定义注解中的使用例子:7、使用反射读取RUNTIME保留策略的Annotat