问题描述
我有一个注释处理器来处理我的自定义注释。这些注解之一,称为 ArgumentConverter,定义如下
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface ArgumentConverter {
Class<? extends ArgConverter<?>> converter();
}
我的注释处理器在它的 process
方法中有这个
for (final TypeElement annotation : annotations) {
Set<? extends Element> annotatedElements = roundEnv.getElementsAnnotatedWith(annotation);
for (final Element annotatedElement : annotatedElements) {
// validation here
}
}
正如标题所说,如何将 annotatedElement 的类型与注释中指定的 converter
的类型参数进行比较?理想情况下,最好检查一个是另一个的子类型,即以下内容就可以了
class MyConverter implements ArgConverter<Double> { ... }
@ArgumentConverter(converter = MyConverter.class)
private Number number;
但我很高兴能够将它限制为相同的类型。我试过阅读有关 TypeMirrors、DeclaredTypes、Elements 等的文档,但没有什么是真正坚持的。如果任何地方都有很好的资源可以详细了解这些内容,那将大有帮助。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)