gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 11:06:16 26 4
gpt4 key购买 nike

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

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

public MockAbstractClass testForAbstract(){
return new MockAbstractClass() {
@Override
void abstractMethod() {
mockMethod();
}
}; }

static abstract class MockAbstractClass{
abstract void abstractMethod(); }

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

最佳答案

Lambda 是在运行时生成类的示例。

访问动态生成的类的唯一方法是通过 Instrumentation 存储它们。每个以任何方式定义的类都会调用一个组件。然后,您需要存储对这些类的字节码的引用。您可以对此进行优化,以便不将类存储在可以从类加载器检索字节代码的位置。

注意:对于 lambda,您无法获取类名或类加载器,但您可以读取字节码来获取类名。

关于java - JVM在哪里存储运行时实现的抽象类的信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50932877/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com