我正在编写一个工具来从 POJO 中生成 JSON 模式,并使用一些自定义注释使用更多数据来增强它。我在编译期间使用 AbstractProcessor 和 Gradle 运行 AnnotationProcessor。我遇到的最大问题是获取类中的字段列表(在本例中为 Element):
public class JsonSchemaProcessor extends AbstractProcessor {
@Override
public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
roundEnv.getElementsAnnotatedWith(JsonSchema.class).stream().forEach(classElement ->
classElement.getEnclosedElements().stream()
.filter(e -> ElementKind.FIELD == e.getKind())
.forEach(/* DO SOMETHING WITH IT */)
);
}
}
getEnclosedElements只返回直接定义的字段。例如,如果从另一个类继承的类我不能在我的列表中定义父类的字段。有什么建议可以找出所有领域,包括那些来自继承的领域?