java註解和反射的結合使用
阿新 • • 發佈:2017-08-04
分享 spa tac over ace 註解 [] sys string
首先反射註解,那麽保留策略必須是Runtime,[email protected](RetentionPolicy.RUNTIME)
①定義一個註解類
@Retention(RetentionPolicy.RUNTIME) @Target({ElementType.FIELD}) public @interface MyAnnotation { int value(); }
②在定義一個類使用註解類
public class MyBean { @MyAnnotation(20) private int value; @Overridepublic 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可以賦給成員變量valueSystem.out.println(myBean);//驗證結果 } } catch (Exception e) { e.printStackTrace(); }; }
輸出結果
java註解和反射的結合使用