Java注解处理器中Element.getAnnotationMirrors()处理可重复注解的行为问询
Java注解处理器中Element.getAnnotationMirrors()处理可重复注解的行为问询
嘿,这个问题我刚好在做注解处理器开发的时候研究过,给你理清楚实际的行为差异:
- 当元素上只标注了一个可重复注解(比如单个
@Schedule,没有用容器注解@Schedules包裹)时,Element.getAnnotationMirrors()返回的列表里会直接包含这个单个@Schedule的注解镜像,不会出现容器注解@Schedules。 - 当元素上标注了多个可重复注解(不管是你显式用
@Schedules包裹多个@Schedule,还是只写了多个@Schedule让编译器自动帮你合成容器),Element.getAnnotationMirrors()返回的列表里只会出现容器注解@Schedules的镜像,不会单独列出每个@Schedule注解。
简单来说,核心区别在于注解的数量:单个可重复注解直接返回自身镜像,多个的话就会被编译器包装成容器注解,处理器拿到的就是容器的镜像。
备注:内容来源于stack exchange,提问作者Garret Wilson
相关产品推荐
相关产品推荐

