JavaCore 类包含一个 create 方法,该方法允许我获取 ITypeRoot(类文件或编译单元的表示形式),给定一个体现文件位置的句柄标识符。
但是,我试图找到对应于特定全名的 typeroot(如果有的话)。
我能想到的唯一实现是扫描系统中的所有类型,获取每个类型的根(甚至不知道如何做到这一点),然后比较 FQN。
任何帮助,将不胜感激。
JavaCore 类包含一个 create 方法,该方法允许我获取 ITypeRoot(类文件或编译单元的表示形式),给定一个体现文件位置的句柄标识符。
但是,我试图找到对应于特定全名的 typeroot(如果有的话)。
我能想到的唯一实现是扫描系统中的所有类型,获取每个类型的根(甚至不知道如何做到这一点),然后比较 FQN。
任何帮助,将不胜感激。
从 JavaCore 单例中,尝试:
ITypeHierarchy myHierarchy = newTypeHierarchy(IRegion region, WorkingCopyOwner owner, IProgressMonitor monitor);
一旦有了层次结构,就可以很容易地以 IType 的形式遍历类文件层次结构。
我假设你有一个IJavaProject
参考。如果不是,那么您将不得不遍历工作区中的所有项目,因为 IType 会根据您所在的项目而有所不同,即使它们具有相同的限定名称。
你可以这样做:
ITypeRoot root = javaProject.findType(qualifiedName).getTypeRoot();
注意事项:
findType
可能返回null,所以需要检查一下findType
假定类型是顶级类型,而不是内部或非公共类型。如果您需要检查这些,则必须使用此变体:IType findType(String fullyQualifiedName, IProgressMonitor progressMonitor)