gpt4 book ai didi

java - 如何使用java中的动态类加载来加载同一类的多个版本

转载 作者:行者123 更新时间:2023-12-01 11:57:55 26 4
gpt4 key购买 nike

在我的java程序中,我有一个带有静态 block 的类。我知道静态 block 仅由 JVM 初始化一次并加载一次。但是,如果我希望该静态 block 被执行(或加载)一次以上怎么办?我尝试使用 class.forName() 在另一个类中动态加载该类,并尝试使用 classLoader。但静态 block 只执行一次。所以建议我最简单的方法。

我开始知道通过使用 classLoader 我们可以加载同一类的多个版本。但如何呢?我可以在我的程序中实现这个概念吗?

最佳答案

以下是您需要的类加载器的粗略草图

class HelloWorldClassLoader extends ClassLoader {

@Override
public Class loadClass(String name) throws ClassNotFoundException {
if (!"MyClass".equals(name)) return super.loadClass(name);
byte[] bb=ByteStreams.toByteArray(
getResourceAsStream(name.replace('.','/')+".class"));
return defineClass(name,bb,0,bb.length);
}
}

要使用它,请执行

new HelloWorldClassLoader().loadClass("MyClass");

关于java - 如何使用java中的动态类加载来加载同一类的多个版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28215433/

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