У меня есть это:
public class Bootstrapper {
public static List<Class<? extends Annotation>> annots = Arrays.asList(
NotNull.class,
ColumnType.class,
RuntimeType.class,
DefaultValue.class
);
}
, а затем это вызывается статическим методом:
for(Class<? extends Annotation> x: Bootstrapper.annots){
if (field.isAnnotationPresent((Class)x)) {
Object value= field.getAnnotation(x).value(); // doesn't compile :(
}
}
, но затем я получаю эту ошибку компиляции:
[ОШИБКА] Не удалось выполнить цель org.apache.maven.plugins: maven-compiler-plugin: 3.5.1: compile (default-compile) для проекта vertx-start-project: ошибка компиляции [ERROR] / home / oleg/codes/oresoftware/vertx.api/src/main/java/huru/query/Bootstrapper.java:[55,50] не может найти символ [ОШИБКА] символ: значение метода () [ОШИБКА]
расположение: интерфейс Java.lang.annotation.Annotation
однако он будет компилироваться, если я жестко закодирую аннотацию:
Object value= field.getAnnotation(ColumnType.class).value(); // compiles!
Я посмотрел на источник, метод field.getAnnotation () выглядит следующим образом:
public <T extends Annotation> T getAnnotation(Class<T> annotationClass) {
Objects.requireNonNull(annotationClass);
return (Annotation)annotationClass.cast(this.declaredAnnotations().get(annotationClass));
}