假设我有一个类定义
@DynamoDBTable(tableName = "table_one")
public class ProcessedVideoItem {
@DynamoDBHashKey(attributeName = "hash_key")
private String id;
}
如何在运行时动态地将atributeName
注释中的@DynamoDBHashKey
更改为actual_hash_key
我找到了在运行时更改类注释的解决方案:
void setAnnotationN(Class< ? > clazzToLookFor, Class<? extends Annotation> annotationToAlter){
Method method = Class.class.getDeclaredMethod("annotationData", null);
method.setAccessible(true);
Object annotationData = method.invoke(clazzToLookFor);
Field annotations = annotationData.getClass().getDeclaredField("annotations");
annotations.setAccessible(true);
Map<Class<? extends Annotation>, Annotation> map =
(Map<Class<? extends Annotation>, Annotation>)annotations.get(annotationData);
map.put(annotationToAlter, annotationValue);
}
但是,这不适用于类的字段上的注释。 我尝试更改
Object annotationData = method.invoke(clazzToLookFor.getDeclaredField("id"));
但这不起作用。