使用 AST 添加另一个超级接口

发布于 2024-11-16 17:28:12 字数 386 浏览 3 评论 0原文

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

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

现在我想添加另一个接口作为 AST 的超级接口,我们称之为 B。结果应该如下所示:

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

我看到有很多“Decleraton”类,即“MethodDeclaration”或“SingleVariableDeclaration”,但我找不到“ExtendsDeclaration”之类的东西。

我将不胜感激任何提示!

I'm using AST to modify source code files. Now I stick at a particular problem. I have an interface, lets call it A:

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

Now I want to add an other interface as super interface with AST, lets call it B. The result should look like this:

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

I saw that there are lots of 'Decleraton'-classes, i.e. 'MethodDeclaration' or 'SingleVariableDeclaration', but I could not find something like 'ExtendsDeclaration'.

I'd appreciate any hints!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

温柔女人霸气范 2024-11-23 17:28:12

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

请参阅TypeDeclaration.superInterfaceTypes()

Super interfaces can be found on the type declaration (union of class and interface declarations).

See TypeDeclaration.superInterfaceTypes()

永言不败 2024-11-23 17:28:12

这就是你所需要的。

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

here is what you need.

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);
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文