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 好像还是来不起,下面贴个代码看看
一年多之前 回复
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试验下
一年多之前 回复
fk002008
fk002008 Method[] method = obj.getClass().getMethods();// 获取所有方法 把这个东西用getDeclaredMethod写
一年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!