#java #sprin& #reflection #annotations
#java #sprin& #отражение #аннотации
Вопрос:
Я хочу создать метод интерфейса по умолчанию, который может отвечать аннотированным значением класса реализации.
Пример: в следующем я хочу, чтобы все дочерние реализации считывали свое собственное @Generated
поле значения:
public interface Parent {
default Strin&[] find() {
return AnnotationUtils.findAnnotation(this.&etClass(), Generated.class).value();
}
}
@Generated(value = {"test"})
public class Child implements Parent {
}
Использование:
System.out.println(new Child().find());
Результат: NullPointerException
, потому что вызов пытается найти аннотацию к Parent
классу интерфейса, а не к классу реализации.
Это все еще возможно каким-то образом?
Комментарии:
1. Ваш вопрос основан на ложной предпосылке.
this.&etClass()
не возвращает Parent
Ответ №1:
Ваш вопрос основан на ложной предпосылке. this.&etClass()
не возвращает Parent
Предполагая, что ваша @Generated
аннотация является версией javax, вы получаете NPE, потому что она не сохраняется во время выполнения.
Смотрите @Retention