我在看一個相當瑣碎類定義了一個註解接收器類型一個方法:如何訪問類型註解接收器類型的參數
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',但我不太確定從那裏你將如何得到註釋。這聽起來像你在說你正在訪問底層實現的私有領域。出於好奇,你能證明你會怎麼做? –
我應該嘗試過。我立刻想到這是由於返回錯誤的類型表示造成的,但正如現在接受的答案所述,這顯然是一個錯誤。 –