0

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

但是,我试图找到对应于特定全名的 typeroot(如果有的话)。

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

任何帮助,将不胜感激。

4

2 回答 2

0

从 JavaCore 单例中,尝试:

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

一旦有了层次结构,就可以很容易地以 IType 的形式遍历类文件层次结构。

于 2009-03-01T22:51:50.027 回答
0

我假设你有一个IJavaProject参考。如果不是,那么您将不得不遍历工作区中的所有项目,因为 IType 会根据您所在的项目而有所不同,即使它们具有相同的限定名称。

你可以这样做:

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

注意事项:

  1. findType可能返回null,所以需要检查一下
  2. 该方法的此变体findType假定类型是顶级类型,而不是内部或非公共类型。如果您需要检查这些,则必须使用此变体:IType findType(String fullyQualifiedName, IProgressMonitor progressMonitor)
于 2012-01-19T06:16:42.533 回答