Модификаторы статического поля Eclipse JDT

Я хочу получить информацию о модификаторе поля. Чтобы быть точным, я хочу выяснить, является ли поле статическим. Например, я хочу изучить следующий код:

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

Как я могу сделать вывод, что JLS3 является статическим полем? Я использовал getModifiers с Modifier.isStatic при анализе методов, и все работало нормально. Однако теперь я не могу получить информацию о том, что JLS3 в приведенном выше фрагменте кода является статическим полем. Есть ли что-то, что мне не хватает?

РЕДАКТИРОВАТЬ:

Это код, который я использую:

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

isStatic имеет значение false в случае JLS3.


person bellpeace    schedule 22.09.2012    source источник
comment
getModifiers должны работать как для FieldDeclaration, так и для MethodDeclaration. Можете ли вы опубликовать свой код и точную проблему, с которой вы столкнулись, например. вызов метода, который дает неожиданные результаты.   -  person Deepak Azad    schedule 22.09.2012


Ответы (1)


Это явно неправильно, используйте name.resolveBinding() вместо name.resolveTypeBinding() --- так вы должны получить объект типа IVariableBinding.

name.resolveTypeBinding() возвращает привязку для типа поля, но не привязку самого поля, чего здесь не требуется.

person Deepak Azad    schedule 23.09.2012