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