gpt4 book ai didi

java - 使用 AST (JDT Eclipse) 解析 java 代码和添加方法

转载 作者:行者123 更新时间:2023-11-30 09:29:03 29 4
gpt4 key购买 nike

我有一个包含类的 .java 文件。我想向该类添加一个方法,但找不到真正有用的“HOWTO”或周围的示例。我正在使用 Eclipse 及其用于 AST 的 JDT 插件。我尝试了从项目创建 ICompilationUnit 的代码

IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject("ProjName");
IJavaProject javaProject = JavaCore.create(project);
IPackageFragment package1 = javaProject.getPackageFragments()[0];
ICompilationUnit unit = package1.getCompilationUnits()[0];

然后用astrewrite添加一个方法。但它似乎只有在我作为插件项目而不是简单的 Java 应用程序运行时才有效。我需要用 java 编写一个应用程序,它“简单地”解析 java 文件并向其类添加方法。我应该做的是:1)直接从我要解析的.java文件创建一个ICompilationUnit(最终位于我自己的项目目录中)2)使用另一种方式

这两种情况我都不能更进一步。谁能帮帮我?

最佳答案

当您需要通过向编译单元添加某些内容来进行更改时,您将不得不使用CompilationUnit 提供的函数来创建新节点。

要向“单元”添加方法,您必须:

  • 使用编译单元创建 MethodDeclaration 节点:

MethodDeclaration md = unit.getAST().newMethodDeclaration();

  • 根据您的要求自定义此方法声明:

md.setName( unit.getAST().newSimpleName( "newMethod") );
md.setBody( unit.getAST().newBlock() );

这将产生:void newMethod() {}

  • 从“单元”获取类型绑定(bind):

TypeDeclaration typeDeclaration = ( TypeDeclaration )unit.types().get( 0 );

  • 将新创建的 MethodDeclaration 添加到主体声明中:

typeDeclaration.bodyDeclarations().add(md);

TypeDeclaration 上有一个名为 getMethods() 的方法,但它不会返回 MethodDeclarations 的实时列表,因此您不能直接修改它。

关于java - 使用 AST (JDT Eclipse) 解析 java 代码和添加方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13760565/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com