Я рассматриваю довольно тривиальный класс с единственным методом, который определяет тип аннотированного приемника:
class Foo<T> {
void foo(Foo<@Bar T> this) {}
}
Теперь я хотел бы получить доступ к аннотации типа в параметре типа приемника @Bar
, но API отражения Java возвращает аннотированный необработанный тип при обращении к получателю:
assert Foo.class.getDeclaredMethod("foo")
.getAnnotatedReceiverType()
instanceof AnnotatedParameterizedType;
Утверждение терпит неудачу, поскольку возвращаемый аннотированный тип возвращается как необработанный тип Foo
. Это намеренно? Я все еще могу найти аннотацию @Bar
при обращении к закрытым свойствам реализации AnnotatedType
, которые возвращаются.
Я запускаю последнюю версию Java 8.