4

FieldDeclaration(タイプ:ASTNode)を(タイプ:JavaElement)に変換するにはどうすればよいですかIField。MethodDeclarationノードの場合のnode.resolveBinding()と同様に、FieldDeclarationASTNodeからバインディングを取得することは可能ですか。

必要性:パブリック定数を持つクラスのFieldDeclarationノードにアクセスしていて、プロジェクトでそのフィールドの参照を検索したいと思います。私は同じようにJDTのSearchEngineを使用しています。このために、次のように検索パターンを作成します。

SearchPattern.createPattern(iField, IJavaSearchConstants.REFERENCES);

私はこれを私の質問の1つへのコメントとして尋ねましたが、同じ答えが得られませんでした。別の質問として投稿します。

回答ありがとうございます。


ディーパックの答えに応えて。

あなたのアプローチを使用して、私は次のようにJavaElementを取得できます

List<VariableDeclarationFragment> fragments = node.fragments();
VariableDeclarationFragment fragment = fragments.get(0);
IJavaElement fieldElement = fragment.resolveBinding().getJavaElement();

このIJavaElementを渡して、IFieldの代わりに検索パターンを作成すると、IFieldの場合と同じ結果が返されます。

4

1 に答える 1

5

いつものように、ASTViewプラグインはあなたの友達です!:-) ASTViewで、VariableDeclarationFragmentにはバインディングが使用可能であるが、FieldDeclarationには使用できないことがわかります。

FieldDeclarationからバインディングを取得する

  • FieldDeclarationの「フラグメント」を取得します=>これでVariableDeclarationFragmentノードの束ができました
  • VariableDeclarationFragment#resolveBinding()を呼び出します(このメソッドはVariableDeclarationから継承されます)
于 2012-06-26T15:41:25.973 に答える