使用 ASM 树 API 获取字段的修饰符
Posted
技术标签:
【中文标题】使用 ASM 树 API 获取字段的修饰符【英文标题】:Get the modifiers of a field using the ASM tree API 【发布时间】:2012-03-02 14:37:59 【问题描述】:我正在使用 ASM 为 Java 类文件编写分析器。我要确定的一件事是类中字段的修饰符(public、static、final?)是什么。但我不知道该怎么做。
在文档中,我找到了修饰符的操作码,这似乎与 FieldNode 类的访问值相关。但是我不明白我是如何从这个值中导出字段的修饰符的。
有什么建议吗?
【问题讨论】:
【参考方案1】:访问成员变量是一个位域,每个位位置对应一个特定的访问修饰符。要检查一下,您必须使用二进制 AND 与来自 Opcodes
的常量并检查结果是否不为零。例如:
boolean isPublic = (node.access & Opcodes.ACC_PUBLIC) != 0;
boolean isStatic = (node.access & Opcodes.ACC_STATIC) != 0;
【讨论】:
以上是关于使用 ASM 树 API 获取字段的修饰符的主要内容,如果未能解决你的问题,请参考以下文章