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 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)