0

JavaCore クラスには、ファイルの場所を表すハンドル識別子を指定して ITypeRoot (クラス ファイルまたはコンパイル ユニットの表現) を取得できる create メソッドが含まれています。

ただし、特定のフルネームに対応する typeroot (存在する場合) を見つけようとしています。

私が考えることができる唯一の実装は、システム内のすべてのタイプをスキャンし、それぞれのタイプ ルートを取得して (その方法もわかりません)、FQN を比較することです。

どんな助けでも大歓迎です。

4

2 に答える 2

0

参考になると思いますIJavaProject。そうでない場合は、ワークスペース内のすべてのプロジェクトをトラバースする必要があります。これは、修飾名が同じであっても、現在のプロジェクトによって IType が異なるためです。

次のようなことができます。

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

警告:

  1. findTypenull を返す可能性があるため、それを確認する必要があります
  2. メソッドのこのバリアントはfindType、型がトップレベルであり、内部型または非パブリック型ではないことを前提としています。これらを確認する必要がある場合は、次のバリアントを使用する必要があります。IType findType(String fullyQualifiedName, IProgressMonitor progressMonitor)
于 2012-01-19T06:16:42.533 に答える
0

JavaCore シングルトンから、次を試してください。

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

階層を取得したら、クラス ファイルの階層を IType として非常に簡単にトラバースできます。

于 2009-03-01T22:51:50.027 に答える