Java 如果我们再次加载已经加载的类,会发生什么?

Java 如果我们再次加载已经加载的类,会发生什么?,java,Java,我的意思是我们有一个类已经在JVM中加载了。在其他一些方法中,我们在不知不觉中试图加载同一个类,那么在这种情况下会发生什么呢?ie将有任何错误或异常表明其已加载。如果没有,那么我们是否可以使用一些额外的特性修改类,并在需要时加载它(这是热部署)。如果您希望在加载类时重用类,您应该检查Singleton类模式。如果您再次加载同一个类,那么您将拥有该类的多个实例,不会发生错误。什么也不会发生。VM首先检查类是否已加载,并且仅在没有加载类时加载。否则,它将返回已加载的类 从ClassLoader.lo

我的意思是我们有一个类已经在JVM中加载了。在其他一些方法中,我们在不知不觉中试图加载同一个类,那么在这种情况下会发生什么呢?ie将有任何错误或异常表明其已加载。如果没有,那么我们是否可以使用一些额外的特性修改类,并在需要时加载它(这是热部署)。

如果您希望在加载类时重用类,您应该检查Singleton类模式。如果您再次加载同一个类,那么您将拥有该类的多个实例,不会发生错误。

什么也不会发生。VM首先检查类是否已加载,并且仅在没有加载类时加载。否则,它将返回已加载的类

ClassLoader.loadClass(..)


(您可以查看有关类加载的详细信息。虽然它与您的问题(总体上)没有直接关系,但对于您这样的问题,它是一个很好的答案来源)

每个类加载程序只能有一个类,因此理论上这是不可能的。实际上,您可以通过在静态初始值设定项块中调用put S.o.p语句来测试这一点。加载类时,这些块只运行一次

编辑

给定完全限定名称的一个类,根据注释进行更正

// First, check if the class has already been loaded
Class c = findLoadedClass(name);
if (c == null) {
    ...
}