Допустим, у меня есть интерфейс аннотации foo
@interface foo {
String bar();
}
Я хочу иметь возможность передать foo
универсальному T
в классе, назовем его someClass
class someClass<T> {
T ourAnnotation = getClass().getAnnotation(T); // this won't work
}
Причина, по которой я это передам, заключается в том, что позже, при создании базового класса, мы можем передать этот универсальный
@foo(bar = ...)
public class MyClass extends someClass<foo> {
public MyClass() {
ourAnnotation.bar // ... do stuff
}
}
Как бы я мог пройти это?
Редактировать: Я нашел решение
В someClass
я сделал следующие изменения:
class someClass<T> {
final T info;
public someClass(Class<T> tClass) {
info = getClass().getAnnotation(tClass);
}
}
Затем, передав foo
(убедитесь, что политика хранения настроена на время выполнения), вы можете легко получить значения из MyClass
.