Получите модификаторы поля, используя API дерева ASM - PullRequest
1 голос
/ 02 марта 2012

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

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

Есть предложения?

1 Ответ

4 голосов
/ 02 марта 2012

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

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