在我的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/