从 Eclipse 插件的独立 java 文件获取 ICompilationUnit/ITypeRoot

Get ICompilationUnit/ITypeRoot from standalone java file for Eclipse Plugin

我正在破解一个 Eclipse 插件,该插件非常适合 Java 项目中的 Java 文件。我想让它适用于任何类型项目中的 Java 个文件。

此插件将每个 Java 文件作为 ICompilationUnit 处理。 但是,在我的方法中,我只能得到 IFile.

的一个实例

如何从这个 IFile 对象创建一个 ICompilationUnit

作为替代方案,ITypeRoot 也可能有效。我已经看到这是使用以下内容直接从编辑器创建的:

IJavaElement input= JavaUI.getEditorInputJavaElement(editorInput);
        if (input instanceof ITypeRoot) {
            return (ITypeRoot) input;
        }

这种方法甚至适用于非 Java 项目(java 来自在编辑器中打开的通用 projects/directories 的文件),这让我相信可以实现类似的东西直接存档。

JavaCore.create(IFile) 将 return 一个 ICompilationUnit 如果适合文件:

IFile file = ...

IJavaElement element = JavaCore.create(file); 

if (element instanceof ICompilationUnit) {
  ICompilationUnit compUnit = (ICompilationUnit)element;

  ...
}

可以 return 编辑其他对象,例如 IClassFile .class 文件。