我正在攻击一个Eclipse插件,它对Java项目中的Java文件非常有效。我想让它适用于任何类型项目中的Java文件。
此插件将每个Java文件处理为ICompilationUnit
。
但是,在我的方法中,我只能获得IFile
的实例。
如何从此ICompilationUnit
对象创建IFile
?
作为替代方案,ITypeRoot
可能也有效。我已经看到这是使用以下内容直接从编辑器创建的:
IJavaElement input= JavaUI.getEditorInputJavaElement(editorInput);
if (input instanceof ITypeRoot) {
return (ITypeRoot) input;
}
这种方法即使对非Java项目(来自编辑器中打开的通用项目/目录的java文件)也有效,这让我相信可以直接为文件实现类似的东西。
答案 0 :(得分:4)
JavaCore.create(IFile)
如果适合该文件,则会返回ICompilationUnit
:
IFile file = ...
IJavaElement element = JavaCore.create(file);
if (element instanceof ICompilationUnit) {
ICompilationUnit compUnit = (ICompilationUnit)element;
...
}
可能会返回其他对象,例如{。{1}} .class文件。