Как создать реализацию интерфейса с использованием Eclipse JDT? - PullRequest
0 голосов
/ 14 февраля 2020

Я использую библиотеку Eclipse JDT для генерации некоторого кода.

На данный момент у меня есть код, который сгенерирует интерфейс для меня. Теперь я приведу реализацию класса для этого интерфейса. Проблема в том, что я не могу найти какие методы мне нужно использовать из документации , чтобы сделать это.

import org.eclipse.jdt.core.dom.*;
import java.util.List;

public class Main {

    public static void main(String[] args) {
        AST ast = AST.newAST(AST.JLS13, true);
        CompilationUnit unit = ast.newCompilationUnit();

        // define strategy interface
        TypeDeclaration type = ast.newTypeDeclaration();
        type.setInterface(Boolean.TRUE);
        type.modifiers().add(ast.newModifier(Modifier.ModifierKeyword.PUBLIC_KEYWORD));
        type.setName(ast.newSimpleName("Strategy"));

        // define strategy interface method
        MethodDeclaration methodDeclaration = ast.newMethodDeclaration();
        methodDeclaration.setConstructor(false);
        List modifiers = methodDeclaration.modifiers();
        modifiers.add(ast.newModifier(Modifier.ModifierKeyword.PUBLIC_KEYWORD));
        methodDeclaration.setName(ast.newSimpleName("algorithmInterface"));
        methodDeclaration.setReturnType2(ast.newPrimitiveType(PrimitiveType.VOID));

        type.bodyDeclarations().add(methodDeclaration);
        unit.types().add(type);

        System.out.println(unit);

        TypeDeclaration concreteType = ast.newTypeDeclaration();
        concreteType.setInterface(Boolean.FALSE);
        concreteType.setName(ast.newSimpleName("ConcreteStrategy"));

        System.out.println(concreteType);
    }
}

Приведенные выше результаты:

public interface Strategy {
    public void algorithmInterface();
}

class ConcreteStrategy {
}

Обратите внимание на класс ConcreteStrategy выше. Вместо этого я хочу вот что:

public interface Strategy {
    public void algorithmInterface();
}

class ConcreteStrategy implements Strategy {
    public void algorithmInterface() {
    // ...
    }
}
...