使用 ASM 树 API 获取字段的修饰符

The*_*ect 1 java field modifier

我正在使用 ASM 编写 Java 类文件分析器。我想要确定的一件事是类中字段的修饰符(public、static、final?)是什么。但我不知道该怎么做。

在文档中,我找到了修饰符的操作码,它似乎与 FieldNode 类的 acces 值相关。但我不明白如何从该值中导出字段的修饰符。

有什么建议么?

Jör*_*ann 5

访问成员变量是一个位域,每个位位置对应一个特定的访问修饰符。要检查位,您必须使用二进制 AND 和常量 fromOpcodes并检查结果是否不为零。例如:

boolean isPublic = (node.access & Opcodes.ACC_PUBLIC) != 0;
boolean isStatic = (node.access & Opcodes.ACC_STATIC) != 0;
Run Code Online (Sandbox Code Playgroud)