используя AST для добавления другого суперинтерфейса - PullRequest
1 голос
/ 22 июня 2011

Я использую AST для изменения файлов исходного кода. Теперь я придерживаюсь определенной проблемы. У меня есть интерфейс, давайте назовем его A:

public interface A extends A_Super{
    (...)
}

Теперь я хочу добавить другой интерфейс как суперинтерфейс с AST, назовем его B. Результат должен выглядеть следующим образом:

public interface A extends A_Super, B{
    (...)
}

Я видел, что существует множество классов Decleraton, т.е. MethodDeclaration или SingleVariableDeclaration, но я не смог найти что-то вроде ExtendsDeclaration.

Буду признателен за любые подсказки!

Ответы [ 2 ]

1 голос
/ 22 июня 2011

Суперинтерфейсы можно найти в объявлении типа (объединение объявлений класса и интерфейса).

См. TypeDeclaration.superInterfaceTypes ()

0 голосов
/ 09 июля 2011

вот что вам нужно.

public static void main(String[] args) {
    String source = "public interface A extends A_Super{}";
    ASTParser parser = ASTParser.newParser(AST.JLS3);
    parser.setSource(source.toCharArray());
    CompilationUnit cu = (CompilationUnit) parser.createAST(null);
    AST ast = cu.getAST();
    TypeDeclaration td = (TypeDeclaration) cu.types().get(0);
    td.superInterfaceTypes().add(ast.newSimpleType(ast.newSimpleName("B")));
    System.out.println(source);
    System.out.println(cu);
}
...