我正在使用Java中的ASM库从已编译的.class文件中提取类的信息。现在,我无法获取在运行时实现的抽象类的信息。JVM在哪里存储在运行时实例化的抽象类的信息?像下面的例子。public MockAbstractClass testForAbstract(){ return new MockAbstractClass() { @Override void abstractMethod() { mockMethod(); } }; }static abstract class MockAbstractClass{ abstract void abstractMethod(); }这里的MockAbstractClass对象是在运行时通过testForAbstract()方法创建的,该类也是在运行时实现的。
1 回答
![?](http://img1.sycdn.imooc.com/5333a1a90001c8d802000200-100-100.jpg)
慕的地10843
TA贡献1785条经验 获得超8个赞
Lambda是一个在运行时生成类的示例。
访问动态生成的类的唯一方法是通过Instrumentation存储它们。对于以任何方式定义的每个类,都有一个组件被调用。然后,您需要存储对这些类的字节码的引用。您可以对此进行优化,以不将类存储在可以从类加载器中检索字节代码的位置。
注意:对于lambda,您不会获得类名或类加载器,但可以读取字节码来获取类名。
添加回答
举报
0/150
提交
取消