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();
        };
    }

輸出結果

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM