Как получить все поля из Javaparser

У меня есть пример кода, который использует анализатор библиотеки рекордера, чтобы получить все поля любого исходного кода Java.

Вот код

Первый класс абстрагирует метод execute

import java.util.List;
import recoder.abstraction.Field;
import recoder.java.declaration.TypeDeclaration;

public interface GetFieldsCommand {

    List<Field> execute(TypeDeclaration td);

}

Этот класс проверяет, есть ли какой-либо предшественник класса, и если его нет, просто добавьте результат в список.

import java.util.ArrayList;
import java.util.List;
import recoder.abstraction.Field;
import recoder.java.declaration.TypeDeclaration;

public class BaseGetFields implements GetFieldsCommand {

    private GetFieldsCommand predecesor = null;

    @Override
    public List<Field> execute(TypeDeclaration td) {
        List<Field> result;
        if (predecesor != null) {
            result = predecesor.execute(td);
        } else {
            result = new ArrayList<Field>();
        }
        return result;
    }


    public GetFieldsCommand setPredecesor(GetFieldsCommand command) {
        predecesor = command;
        return this;
    }

}

Это основная реализация, в которой сначала извлекаются все поля любого объявленного типа, а затем извлекается поле, если оно принадлежит какому-либо конкретному классу.

import java.util.List;
import recoder.abstraction.Field;
import recoder.java.declaration.ClassDeclaration;
import recoder.java.declaration.TypeDeclaration;

public class GetAllFields extends BaseGetFields {

    @Override
    public List<Field> execute(TypeDeclaration td) {
        List<Field> result = super.execute(td);
        for (Field field : td.getAllFields()) {
            if (field.getContainingClassType() instanceof ClassDeclaration) {
                result.add(field);
            }
        }
        return result;
    }


    @Override
    public final GetFieldsCommand setPredecesor(GetFieldsCommand command) {
        throw new RuntimeException("This command cannot have predecesors");
    }

}

Я хочу подобную вещь, но с javaparser( ссылка здесь) не с библиотекой рекордера. но в javaparser я не могу найти getallfields в Typedeclaration, как в случае с рекордером, кто-нибудь здесь, чтобы помочь.

0 ответов

Другие вопросы по тегам