記一下修改實例註解屬性的代碼


//obj 對象  className 字段上的註解類
 private void changeAnnotation(Class<?> obj,String fieldName, Class className, String changename,String fname){
        try {
            Field field= obj.getDeclaredField(fieldName);
            Annotation aClass= field.getAnnotation(className);
            InvocationHandler invocationHandler = Proxy.getInvocationHandler(aClass);
            Field annoField = invocationHandler.getClass().getDeclaredField("memberValues");
            annoField.setAccessible(true);
            try {
                Map memberValues = (Map) annoField.get(invocationHandler);
                //修改註解屬性
                memberValues.put(fname,changename);
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            }
        } catch (NoSuchFieldException e) {
            e.printStackTrace();
        }
    }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章