我正在破解一个 Eclipse 插件,该插件非常适合 Java 项目中的 Java 文件。我想让它适用于任何类型项目中的 Java 文件。
此插件将每个 Java 文件作为一个 ICompilationUnit
进行处理。
但是,在我的方法中,我只能获得 IFile
的实例。
我如何从这个 IFile
对象创建一个 ICompilationUnit
?
作为替代方案,ITypeRoot
也可能有效。我已经看到这是使用以下内容直接从编辑器创建的:
IJavaElement input= JavaUI.getEditorInputJavaElement(editorInput);
if (input instanceof ITypeRoot) {
return (ITypeRoot) input;
}
这种方法甚至适用于非 Java 项目(来自在编辑器中打开的通用项目/目录的 java 文件),这让我相信可以直接对文件实现类似的东西。
最佳答案
JavaCore.create(IFile)
将返回一个 ICompilationUnit
如果它适合文件:
IFile file = ...
IJavaElement element = JavaCore.create(file);
if (element instanceof ICompilationUnit) {
ICompilationUnit compUnit = (ICompilationUnit)element;
...
}
可能会返回其他对象,例如 .class 文件的 IClassFile
。
关于java - 从 Eclipse 插件的独立 java 文件中获取 ICompilationUnit/ITypeRoot,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41066054/