zoukankan      html  css  js  c++  java
  • java注解和反射的结合使用

    首先反射注解,那么保留策略必须是Runtime,也就是@Retention(RetentionPolicy.RUNTIME)

    ①定义一个注解类

    @Retention(RetentionPolicy.RUNTIME)
    @Target({ElementType.FIELD})
    public @interface MyAnnotation {
        int value();
    }

    ②在定义一个类使用注解类

    public class MyBean {
        @MyAnnotation(20)
        private int value;
        @Override
        public String toString() {
            return String.valueOf(value);
        }
    }

    ③在main方法里面反射注解

    public static void main(String[] args) {
            try {
                Field field = MyBean.class.getDeclaredField("value");//获取成员变量value
                field.setAccessible(true);//将value设置成可访问的
                if(field.isAnnotationPresent(MyAnnotation.class)){//判断成员变量是否有注解
                    MyAnnotation myAnnotation = field.getAnnotation(MyAnnotation.class);//获取定义在成员变量中的注解MyAnnotation
                    int value = myAnnotation.value();//获取定义在MyBean的MyAnnotation里面属性值
                    MyBean myBean=new MyBean();
                    field.setInt(myBean, value);//将注解的值20可以赋给成员变量value
                    System.out.println(myBean);//验证结果
                }
            } catch (Exception e) {
                e.printStackTrace();
            };
        }

    输出结果

  • 相关阅读:
    计算机网络基础
    ansible
    CDH集群日常
    漏洞挖掘学习
    JDWP
    开源安全项目调研
    SMB漏洞汇总
    Windows账户LM/NTLM
    SMB知识汇总
    Memcache未授权漏洞
  • 原文地址:https://www.cnblogs.com/pig-brother/p/7282524.html
Copyright © 2011-2022 走看看