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

时间:2012-03-02 14:38:00

标签: java field modifier

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

在文档中我找到了修饰符的操作码,它们似乎与FieldNode类的访问值相关联。但我不知道如何从该值中推导出该字段的修饰符。

有什么建议吗?

1 个答案:

答案 0 :(得分:4)

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

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