使用java和ASM访问InnerClassNode的方法

时间:2013-10-06 20:08:56

标签: java inner-classes java-bytecode-asm

我正在尝试使用ASM访问内部类的方法,字段等。为此,我将父类视为ClassNode并存储

List<InnerClassNode> list = myClassNode.innerClasses

然后我遍历此列表并尝试从每个InnerClassNode获取我想要的信息。不过这是件事。查看官方ASM API文档,InnerClassNode类不扩展ClassNode类。实际上似乎没有办法让内部类有任何实际用处。既然这是我唯一可以获得有关类“内部”类的信息的方法,那么就无法获得有关内部类的信息吗?

1 个答案:

答案 0 :(得分:1)

InnerClassNode和相应的ClassVisitor.visitInnerClass方法 简单地反映存储在类字节码InnerClasses_attribute中的信息,它描述了内部类和当前类之间的关系(例如,类名,外部类名和访问标志)。要获取有关内部类的信息,您需要单独加载它,基本上与加载外部类的方式相同。