我在看一个相当琐碎类定义了一个注解接收器类型一个方法:如何访问类型注解接收器类型的参数
class Foo<T> {
void foo(Foo<@Bar T> this) {}
}
我现在想访问类型标注在接收器类型的参数@Bar
但访问时,接收器Java反射API返回的注释原始类型:
assert Foo.class.getDeclaredMethod("foo")
.getAnnotatedReceiverType()
instanceof AnnotatedParameterizedType;
断言失败为返回的注释类型是returne d作为原始类型Foo
。这是故意的吗?在访问返回的AnnotatedType
的实现的私有属性时,我仍然可以找到@Bar
注释。
我运行最新的Java 8
你可以看到一个例子[这里](HTTPS:/ /gist.github.com/psamsotha/a68b9dafb457b3168ed7)关于如何获得'AnnotatedParameterizedType',但我不太确定从那里你将如何得到注释。这听起来像你在说你正在访问底层实现的私有领域。出于好奇,你能证明你会怎么做? –
我应该尝试过。我立刻想到这是由于返回错误的类型表示造成的,但正如现在接受的答案所述,这显然是一个错误。 –