У меня есть вопрос о получении значения пользовательской аннотации, которое является значением другой пользовательской аннотации.Например, у меня есть интерфейс аннотаций @SqlInfo
, который имеет два значения, которые также являются интерфейсами аннотаций.
SqlInfo.java
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface SqlInfo {
CodificationInfo codificationInfo();
DocumentInfo documentInfo();
}
@CodificationInfo
и @DocumentInfo
также являются интерфейсами аннотаций.У каждого из них свои собственные ценности.
CodificationInfo.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();
}
Пока я использую только @CodificationInfo
аннотацию для класса.Я получаю значения из него с помощью этого метода:
Метод получения значений аннотаций
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;
}
Я хочу знать, как получить @CodificationInfo
значений при использовании аннотации @SqlInfo
для класса?Это означает - как получить значения из поданнотации?
PS: я знаю, что могу использовать обе аннотации отдельно для класса.Но я хочу узнать, как получить значения из поданнотации.Например, в спящем режиме используйте его для аннотации @AuditOverrides
.