2

フィールド修飾子に関する情報を取得したい。正確には、静的なフィールドであるかどうかを調べたいと思います。たとえば、次のコードを調べたいと思います。

ASTParser parser = ASTParser.newParser(AST.JLS3);

JLS3が静的フィールドであるとどのように推測できますか?メソッドを分析するときにModifier.isStaticでgetModifiersを使用しましたが、正常に機能しました。ただし、上記のコードスニペットのJLS3が静的フィールドであるという情報を取得できません。足りないものはありますか?

編集:

これは私が使用しているコードです:

private boolean visit(SimpleName name){
   boolean isStatic = Modifier.isStatic(name.resolveTypeBinding().getModifiers());
   ...
   return true;
}

JLS3の場合、isStaticはfalseです

4

1 に答える 1

3

それは明らかに間違っています。---name.resolveBinding()の代わりに使用するname.resolveTypeBinding()ので、タイプIVariableBindingのオブジェクトを取得する必要があります。

name.resolveTypeBinding()フィールドのタイプのバインディングを返しますが、フィールド自体のバインディングは返しません。これは、ここで必要なものではありません。

于 2012-09-23T00:58:01.347 に答える