gpt4 book ai didi

java - 我们如何在 JVM 启动时加载类(立即)?

转载 作者:行者123 更新时间:2023-11-30 04:53:46 29 4
gpt4 key购买 nike

大家下午好,

我想知道是否有办法使类的静态 block 运行,即使类本身没有被引用?

我知道它是延迟加载的,因此只需调用该类的任何函数即可开始启动该类,

但是,我希望该类在任何调用之前启动,换句话说,我希望它在 JVM 启动时运行,无论它是否被引用。

Preloading java classes/libraries at jar startup建议了一种解决方法,但这并不是我正在寻找的解决方案(基本上我不想需要执行Class.forName,我希望它在 JVM 启动时完成)

我们将如何去做?

最佳答案

如果有办法做到这一点,它可能会涉及使用 JVM 选项,这并不优雅或完全可移植。

如果您只需要在执行实际应用程序代码之前初始化某个类,那么在现有应用程序周围使用包装类可能是一种更简洁的选择:

public class LoggedLauncher {
public static void main(String[] args) {
// Do whatever you need to initialize your logging class
//
// e.g. call a static method:
//
// MyLogger.init();

// ...then start your application
MyApplication.main(args);
}
}

您甚至可以使用一些反射,以便可以将应用程序类作为参数提供给包装器,从而替换硬编码的引用。如果这样做,请不要忘记操作 args 数组,以便将正确的参数传递给应用程序的 main() 方法。

关于java - 我们如何在 JVM 启动时加载类(立即)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9228938/

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