2012-03-02 5 views
1

Я пишу анализатор для файлов классов Java, используя ASM. Одна из вещей, которую я хочу определить, - это модификаторы (public, static, final?) Полей в классе. Но я не знаю, как это сделать.Получить модификаторы поля с использованием дерева ASM API

В документации я нашел коды операций модификаторов, которые, как представляется, коррелируют со значением acces класса FieldNode. Но я не вижу, как я получаю модификаторы поля из этого значения.

Любые предложения?

ответ

4

Переменная элемента доступа является битовым полем, каждая позиция бит соответствует определенному модификатору доступа. Чтобы проверить бит, вы должны использовать двоичный код AND с константой от Opcodes и проверить, не является ли результат равным нулю. Например:

boolean isPublic = (node.access & Opcodes.ACC_PUBLIC) != 0; 
boolean isStatic = (node.access & Opcodes.ACC_STATIC) != 0; 
+1

Это работает. Спасибо! – TheArchitect

Смежные вопросы