У меня есть такой класс:
class Data<T extends Annotation> {
public Data(T annotation) {
for (Field f : annotation.getClass().getFields()) {
...println(f.getName());
}
}
}
Я пытаюсь передать ему @interface.Ради примера, скажем, мой интерфейс выглядит следующим образом:
@Retention(..RUNTIME)
@interface foo {
int bar() default 0;
}
Это класс, который будет иметь аннотацию:
@foo(bar = 15) // bar is now 15
public class someClass {
public Data<foo> d = new Data<foo>(getClass().getAnnotation(foo.class)); // should pass the 15 along as well
}
Кажется, проблема в annotation.getClass ().getFields ().Он не вернет никаких допустимых полей, которые затем не будут зациклены, что не выведет имена.Я пытаюсь получить доступ к полям неправильно?Я не вижу никаких других опций внутри T, которые могли бы позволить мне захватывать поля, так что может быть не так?