我正在查看一个相当琐碎的类,它具有定义了一个带注释的接收方类型的单个方法:
class Foo<T> {
void foo(Foo<@Bar T> this) {}
}
我现在想访问接收器类型参数上的类型注释@Bar
,但Java反射API在访问接收器时返回一个带注释的原始类型:
assert Foo.class.getDeclaredMethod("foo")
.getAnnotatedReceiverType()
instanceof AnnotatedParameterizedType;
断言失败,因为返回的注释类型是作为原始类型Foo
返回的。这是有意的吗?当访问返回的AnnotatedType
实现的私有属性时,我仍然可以找到@Bar
注释。 我正在运行最新版本的Java 8。
AnnotatedParameterizedType
。但是,我不太确定如何从中获取注解。听起来你是在说你正在访问底层实现的私有字段。纯粹出于好奇,你能展示一下如何做到吗? - Paul Samsotha