在Eclipse JDT中,如何最有效地在工作空间中找到与完全限定名称对应的类型根?

时间:2009-03-01 21:21:52

标签: eclipse eclipse-jdt

JavaCore类包含一个create方法,允许我在给定一个包含文件位置的句柄标识符的情况下获取ITypeRoot(类文件或编译单元的表示)。

但是,我正在尝试找到与特定全名对应的typeroot(如果有的话)。

我能想到的唯一实现是扫描系统中的所有类型,在每个类型上获取类型root(甚至不知道如何做到这一点),然后比较FQN。

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:0)

从JavaCore单例中,尝试:

ITypeHierarchy myHierarchy = newTypeHierarchy(IRegion region, WorkingCopyOwner owner, IProgressMonitor monitor);

一旦拥有了层次结构,就可以很容易地将类文件层次结构遍历为IType。

答案 1 :(得分:0)

我假设你有一个IJavaProject参考。如果没有,那么您将不得不遍历工作空间中的所有项目,因为IType是不同的,具体取决于您所在的项目,即使它们具有相同的限定名称。

你可以这样做:

ITypeRoot root = javaProject.findType(qualifiedName).getTypeRoot();

注意事项:

  1. findType可能会返回null,因此需要检查
  2. findType方法的此变体假定类型是顶级类型,而不是内部类型或非公共类型。如果您需要检查这些,则必须使用此变体:IType findType(String fullyQualifiedName, IProgressMonitor progressMonitor)