運用了lombox插件
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
import lombok.experimental.Accessors;
import java.lang.annotation.Annotation;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Proxy;
import java.util.Map;
/**
*
* * @projectName
* * @title AnnotationUtil
* * @package
* * @description 註解工具類
* * @author IT_CREAT
* * @date 2019 2019/9/14 21:16
* * @version V1.0.0
*
*/
@Data
@Accessors(chain = true)
@ToString
@NoArgsConstructor
public class AnnotationUtil<T> {
public Class<T> clazz;
public AnnotationUtil(Class<T> clazz){
this.clazz = clazz;
}
/**
* 動態修改對象屬性上某個註解的屬性值,通過getClazz()方法可以得到修改後的class
* @param fieldName 對象屬性名稱
* @param annotationClass 註解class
* @param attrName 註解屬性名稱
* @param attrValue 註解屬性值
* @return 本工具類實例
* @throws Exception 異常
*/
public AnnotationUtil updateAnnoAttrValue(String fieldName, Class<? extends Annotation> annotationClass,String attrName, Object attrValue) throws Exception {
Field[] declaredFields = this.clazz.getDeclaredFields();
if(null != declaredFields && declaredFields.length != 0){
for (int i=0;i<declaredFields.length;i++){
Field declaredField = declaredFields[i];
if(fieldName.equals(declaredField.getName())){
InvocationHandler invocationHandler = Proxy.getInvocationHandler(declaredField.getAnnotation(annotationClass));
Field hField = invocationHandler.getClass().getDeclaredField("memberValues");
hField.setAccessible(true);
Map memberValues = (Map)hField.get(invocationHandler);
memberValues.put(attrName,attrValue);
break;
}
}
}
return this;
}
public static void main(String[] args) {
}
}