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