使用AST添加其他超级接口

时间:2011-06-22 07:29:05

标签: java abstract-syntax-tree eclipse-jdt

我正在使用AST来修改源代码文件。现在我坚持一个特定的问题。我有一个界面,我们称之为A:

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

现在我想添加一个其他接口作为AST的超级接口,让我们调用它B.结果应如下所示:

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

我看到有很多'Decleraton'类,即'MethodDeclaration'或'SingleVariableDeclaration',但我找不到类似'ExtendsDeclaration'的内容。

我很感激任何提示!

2 个答案:

答案 0 :(得分:1)

可以在类型声明(类和接口声明的联合)上找到超级接口。

请参阅TypeDeclaration.superInterfaceTypes()

答案 1 :(得分:0)

这就是你需要的。

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);
}