簡體   English   中英

Java反射按類型查詢注釋

[英]Java reflection querying annotations by type

我正在嘗試使用以下代碼從類中查詢批注:

for (final Annotation annotation : annotations) System.out.println(annotation);
final JsonSchema[] schemas = clazz.getAnnotationsByType(JsonSchema.class);

if (schemas.length == 0) {
    throw new IllegalArgumentException("No JsonSchema annotation found.");
}

如果我通過單元測試到達這里,那么我將通過schemas.length測試。 如果我通過Maven插件將類的URL傳遞到URLClassLoader()。loadClass()中,則它將拋出IllegalArgumentException。 但是,它也會打印出:

@mypackage.JsonSchema()

即,如果我遍歷getAnnotations()的結果,但批注似乎在那里,但getAnnotationsByType找不到。 是什么原因造成的?

編輯:如果我嘗試遍歷並比較規范名稱,然后將其強制轉換為JsonSchema,則它不會讓我,因為它似乎是com.sun.proxy,它不是JsonSchema的實例。

編輯:我確定是因為它們位於不同的類加載器中。 很好的解決方法...

得到它了。

我正在傳遞URL數組,以供類加載到新的URLClassLoader()。 通過將Thread.currentThread()。getContextClassLoader()的第二個參數添加到構造函數中,它似乎將它們加載到相同的ClassLoader中,然后一切都按預期方式工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM