我有一个关于获取自定义注释值的问题,该值是另一个自定义注释的值。例如我有一个
@SqlInfo
有两个值的注释接口,也是注释接口。
小精灵
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface SqlInfo {
CodificationInfo codificationInfo();
DocumentInfo documentInfo();
}
@CodificationInfo
和
@DocumentInfo
也是注释接口。每个人都有自己不同的价值观。
编码信息.java
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface CodificationInfo {
enum KEYS {
DOMAIN,
FILE,
TABLE,
CLASS
}
String domain() default "";
String fileName() default "";
String table() default "";
Class codificationClass();
}
当我只使用
@编码信息
类的批注。我使用以下方法从中获取值:
注释值getter方法
public Object getClassAnnotationValue(Class c, String key) {
Annotation annotation = c.getAnnotation(CodificationInfo.class);
return getObjectByKey(annotation, key);
}
private Object getObjectByKey(Annotation annotation, String key) {
if (annotation instanceof CodificationInfo) {
if (key.equalsIgnoreCase(CodificationInfo.KEYS.TABLE.toString())) {
return ((CodificationInfo) annotation).table();
} else if (key.equalsIgnoreCase(CodificationInfo.KEYS.CLASS.toString())) {
return ((CodificationInfo) annotation).codificationClass();
} else if (key.equalsIgnoreCase(CodificationInfo.KEYS.DOMAIN.toString())) {
return ((CodificationInfo) annotation).domain();
} else if (key.equalsIgnoreCase(CodificationInfo.KEYS.FILE.toString())) {
return ((CodificationInfo) annotation).fileName();
}
}
return null;
}
我想知道如何
@编码信息
使用时的值
@ SqlInfo
课堂注释?它意味着——
如何从子批注中获取值?
附注:我知道我可以分别使用这两个注释。但我想知道如何从子注释中获取值。例如hibernate使用它
@AuditOverrides
注释。