如何验证注释参数的泛型类型参数是注释字段类型的子类

问题描述

我有一个注释处理器来处理我的自定义注释。这些注解之一,称为 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 (将#修改为@)