Java注解处理器声明空注解集的含义及相关规范执行疑问
Java注解处理器声明空注解集的含义及相关规范执行疑问
我最近在研究Java注解处理器的工作机制时,对官方规范的执行逻辑产生了困惑,想和大家探讨下具体问题:
根据注解处理器相关文档的描述:如果一个处理器声明处理某一组注解,那么其他注解处理器将不会被要求处理这组注解。
但我实际观察到注解处理的最终轮次存在两个特殊行为:
- 任何之前被调用过的处理器,都会参与到最终轮的处理中
- 最终轮的注解集合始终是空的
这看起来似乎和上面的规范描述有冲突,我想知道这是否真的违反了规范?
我还设想了一个场景:假设处理器1在接收到空注解集合时,process方法返回true,相当于它声明处理空注解集。按照文档的说法,后续的处理器应该不会被要求处理这个(空的)注解集,但实际情况是后续处理器依然会被调用。
我是不是忽略了什么细节?是不是规范只在processingOver返回false的情况下才生效?
备注:内容来源于stack exchange,提问作者Laird Nelson
相关产品推荐
相关产品推荐

