Java 使用AbstractProcessor获取元素中继承的所有字段,包括非直接字段

Java 使用AbstractProcessor获取元素中继承的所有字段,包括非直接字段,java,annotations,annotation-processing,annotation-processor,Java,Annotations,Annotation Processing,Annotation Processor,我正在编写一个工具,用POJO生成JSON模式,并使用一些自定义的注释使用更多数据对其进行增强。 我使用AbstractProcessor&Gradle在编译时运行AnnotationProcessor。我遇到的最大问题是获取类中的字段列表(本例中为元素): 公共类JsonSchemaProcessor扩展了AbstractProcessor{ @凌驾 公共布尔过程(SET)你必须沿着类层次结构走。请参阅。谢谢!它解决了我的问题。如果没有人提出更好的解决方案,我将发布我的实现。 public c

我正在编写一个工具,用POJO生成JSON模式,并使用一些自定义的注释使用更多数据对其进行增强。 我使用AbstractProcessor&Gradle在编译时运行AnnotationProcessor。我遇到的最大问题是获取类中的字段列表(本例中为元素):

公共类JsonSchemaProcessor扩展了AbstractProcessor{
@凌驾

公共布尔过程(SET)你必须沿着类层次结构走。请参阅。谢谢!它解决了我的问题。如果没有人提出更好的解决方案,我将发布我的实现。
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 */)
        );
    }
}