1

我正在编写一个 Eclipse 插件来进行一些简单的代码生成。我能够获取一个代表我需要修改的方法的 IMethod,但我不确定如何在其主体中实际编写附加代码。我知道这可以用 AST 节点来完成,那么有没有办法在 IMethod 和 MethodDeclaration 之间转换或类似的东西?

4

1 回答 1

0

IMethod 是 JDT 的 Java 模型的一个类,而 MethodDeclaration 是 JDT AST 的一个节点类。Java 模型与 AST 没有任何联系。但是您可以使用该模型来创建 AST,通常使用 ICompilationUnit(表示 Java 源文件),尽管也可以从字符串创建 AST。

我建议看看这篇文章


编辑:

可能“没有直接联系”是更好的措辞。在JDT 常见问题解答中如下:

如何从 IBinding、IJavaElement、ASTNode 之一转到另一个?

[...]

从 IJavaElement 到 IBinding

如果您只需要绑定键而不需要绑定对象本身,请在 IJavaElement 的子类型中查找“getKey()”方法。此方法返回绑定键,这在许多情况下都很有用,例如,请参阅下一点。请注意,并非 IJavaElement 的所有子类型都有对应的绑定,例如 IType 和 IMethod 有一个,但 IPackageFragment 和 IImportContainer 没有。

如果你真的需要绑定对象,你可以使用'org.eclipse.jdt.core.dom.ASTParser.createBindings(IJavaElement[], IProgressMonitor)'。请注意,与仅获取绑定密钥相比,此操作稍微昂贵,因为必须创建绑定。

从 IJavaElement 到其声明的 ASTNode

org.eclipse.jdt.core.dom.CompilationUnit.findDeclaringNode(String) - 字符串参数是绑定键,见上一点。

于 2012-10-10T09:37:24.413 回答