我正在看一个相当简单的类,它有一个定义带注释的接收器类型的方法:
class Foo<T> {
void foo(Foo<@Bar T> this) {}
}
我现在想访问接收器类型参数上的类型注释,@Bar
但 Java 反射 API 在访问接收器时返回带注释的原始类型:
assert Foo.class.getDeclaredMethod("foo")
.getAnnotatedReceiverType()
instanceof AnnotatedParameterizedType;
断言失败,因为返回的带注释的类型作为原始类型返回Foo
。这是故意的吗?@Bar
在访问返回的实现的私有属性时,我仍然可以找到注释AnnotatedType
。
我正在运行最新版本的 Java 8。