JVM在哪里存储在运行时实现的抽象类的信息?

我正在使用Java中的ASM库从已编译的.class文件中提取类的信息。现在,我无法获取在运行时实现的抽象类的信息。


JVM在哪里存储在运行时实例化的抽象类的信息?像下面的例子。


public MockAbstractClass testForAbstract(){

    return new MockAbstractClass() {

        @Override

        void abstractMethod() {

            mockMethod();

        }

    }; }


static abstract class MockAbstractClass{

    abstract void abstractMethod();   }

这里的MockAbstractClass对象是在运行时通过testForAbstract()方法创建的,该类也是在运行时实现的。


慕雪6442864
浏览 179回答 1
1回答

慕的地10843

Lambda是一个在运行时生成类的示例。访问动态生成的类的唯一方法是通过Instrumentation存储它们。对于以任何方式定义的每个类,都有一个组件被调用。然后,您需要存储对这些类的字节码的引用。您可以对此进行优化,以不将类存储在可以从类加载器中检索字节代码的位置。注意:对于lambda,您不会获得类名或类加载器,但可以读取字节码来获取类名。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java