9
A
回答
4
我想,我找到了解決辦法。正如我所想,目前的javac是不可能的。本地註釋只是簡單的註釋,並且不會由可插入註釋處理API處理。但在JSR308中有一些有趣的工作,處理支持類型變量,局部變量,註釋類型檢查和轉換等參數的奇妙事物的類型註釋,並且看起來,它將被合併到openJDK 8.很好的
1
在JSR269,相關的接口將是javax.lang.model.element.VariableElement
,這對於訪問這樣的標註繼承getAnnotation(Class<A> annotationType)
:
for (VariableElement variable : ElementFilter.fieldsIn(methods)) {
final AnnotationType annotation = variable.getAnnotation(AnnotationType.class);
if (annotation != null) {
// ...
}
}
+2
謝謝你的回答。但'methods'是一組元素的含義,它應該已經包含註釋的字段(這使得該方法成爲該集合的錯誤名稱)。所以'fieldsIn'不會在方法中返回「fields(=局部變量)」,而只是過濾一組給定的元素。問題在於,API不會給我註釋局部變量(作爲'process'-method的參數)。現在,它看起來像我必須處理所有(不只是註釋)類和手動搜索本地變量註釋(雖然我不知道如何)。或者有沒有辦法使用你的例子? – wrm
相關問題
- 1. 自定義註釋處理器 - 使用註釋檢測方法
- 2. Java註釋處理器,帶註釋的註釋類型
- 3. 接口方法定義上的Java註釋未被處理?
- 4. 針對特定註釋方法的Spring引導異常處理
- 5. 自定義註釋處理
- 6. 註釋處理器例外
- 7. 如何處理註釋?
- 8. 使用註釋處理器
- 9. 註釋處理器@autoservice
- 10. 何時處理Java註釋?
- 11. 註釋處理 - 創建ExecutableElement
- 12. eclipse java註釋處理
- 13. Java註釋處理基礎
- 14. 未處理HK2註釋
- 15. 處理CDATA和註釋ElementTree
- 16. 何時處理@ResourceDependency註釋?
- 17. 在@ModelAttribute註釋方法內自動記錄@PathVariable註釋參數
- 18. 將靜態方法與註釋處理和javapoet合併
- 19. 註釋處理器添加方法調用
- 20. 註釋處理器:從process()方法寫入文件
- 21. Spring引導配置處理器進程註釋bean方法嗎?
- 22. 我可以在方法體內使用註釋嗎?
- 23. Java註釋處理 - 如何處理已處理的代碼?
- 24. 用註解註釋的方法的方面,用另一個註釋註釋
- 25. 不能在方法內使用註釋
- 26. Spring註釋@Autowired內部方法
- 27. JAX-RS:基於方法註釋的地圖方法實體
- 28. 處理註銷的更好方法
- 29. APT如何處理嵌套註釋類的註釋
- 30. 具有元註釋的觸發器註釋處理器
JSR 308不直接支持註釋處理(儘管它糾正了一個長期的錯誤,其中局部變量註釋未存儲在類文件中)。它具有您提及的其他功能,並且它是Java 8的一部分。[Checker Framework](http://checkerframework.org)構建於JSR 308之上,確實提供方便訪問者在方法體內處理註釋。 – mernst