注解+反射实现自定义注解赋值

1、定义一个注解

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

2、定义一个类

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

3、利用反射获取成员变量上面的注解的value并赋值给成员变量。

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();
        };
    }
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容