从 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 文件。
我正在破解一个 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 文件。