CSDNRGY 2016-12-30 06:19 采纳率: 87.5%
浏览 4111
已采纳

得到注解后,如果获取注解里面的值?

代码如下,A、B是两个注解,Test是测试的demo

 package com.rgy.test;

import static java.lang.annotation.ElementType.FIELD;
import static java.lang.annotation.ElementType.METHOD;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;

@Retention(RUNTIME)
@Target({ FIELD, METHOD })
public @interface A {
    String aId();
    String aName();
}

 package com.rgy.test;

import static java.lang.annotation.ElementType.FIELD;
import static java.lang.annotation.ElementType.METHOD;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;

@Retention(RUNTIME)
@Target({ FIELD, METHOD })
public @interface B {
    String bId();
    String bName();
}

 package com.rgy.test;

import java.lang.annotation.Annotation;
import java.lang.reflect.Field;

public class Test {

    @A(aId = "a1", aName = "a1")
    @B(bId = "b1", bName = "b1")
    private String id;

    @A(aId = "a2", aName = "a2")
    @B(bId = "b2", bName = "b2")
    private String name;

    private static void test() {
        Field[] declaredFields = Test.class.getDeclaredFields();
        for (Field field : declaredFields) {
            Annotation[] annotations = field.getAnnotations();
            for (Annotation annotation : annotations) {
                System.out.println(annotation);
            }
        }
    }

    public static void main(String[] args) throws InstantiationException, IllegalAccessException {
        test();
    }
}

  • 写回答

2条回答 默认 最新

  • 爱吃芒果的程序猿 2016-12-30 06:32
    关注

    你拿到Filed的时候,不要用getAnnotations()这个方法,这是获取这个Filed上的所有注解,你不好具体处理,你可以使用这个方法

     getAnnotation(A.class)
    

    就可以获取当前Filed上的注解A的对象,然后就可以取到注解里你想要的属性了值

     A a = getAnnotation(A.class);
     String aId = a.aId();
    

    B注解的话,也是类似这么做

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog