【发布时间】:2016-10-28 11:00:04
【问题描述】:
鉴于此注释:
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.ANNOTATION_TYPE)
public @interface Interceptor {
Class<? extends Behaviour> value();
}
我的库的用户可以扩展其 API,创建带有 @Interceptor 注释的自定义注释,如下所示:
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@Interceptor(BypassInterceptor.class)
public @interface Bypass {
}
AbstractProcessor 提供了一个名为getSupportedAnnotationTypes 的方法,它返回处理器支持的注释类型的名称。但是如果我指定@Interceptor的名字,如下:
@Override public Set<String> getSupportedAnnotationTypes() {
Set<String> annotations = new LinkedHashSet();
annotations.add(Interceptor.class.getCanonicalName());
return annotations;
}
当一个类被@Bypass注解时,processor#process方法不会被通知。
那么,当使用AbstractProcessor 时,如何为注解声明哪个目标是另一个注解?
【问题讨论】:
标签: java java-annotations