我的意思是我们有一个已经加载到JVM中的类。在其他一些方法中,我们在不知不觉中试图加载同一个类,所以在这种情况下会发生什么?即将有任何错误或异常说它已经加载。如果没有,那么我们是否可以修改具有一些额外功能的类,并在需要热部署时加载它。
答案 0 :(得分:5)
什么都没发生。 VM首先检查是否加载了类,如果没有,则加载它。否则它返回已经加载的类。
来自ClassLoader.loadClass(..)
:
// First, check if the class has already been loaded
Class c = findLoadedClass(name);
if (c == null) {
...
}
(您可以查看this article关于课程加载的详细信息。虽然它与您的问题没有直接关系(整体而言),但对于像您这样的问题,它是一个很好的答案来源。
答案 1 :(得分:0)
如果您希望在加载类时重用一个类,则应该检查Singleton类模式。如果你再次加载同一个类,那么你将拥有该类的多个实例,不会发生错误。
答案 2 :(得分:0)
每个类加载器只能有一个类,所以理论上这是不可能的。您实际上可以通过调用静态初始化程序块中的S.o.p语句来测试它。这些块只在加载类时运行一次。
修改强>
给定完全限定名称的一个类别,根据评论
进行更正