gpt4 book ai didi

java - 调用 Class.forName() 两次

转载 作者:行者123 更新时间:2023-11-30 06:09:27 28 4
gpt4 key购买 nike

我目前正在阅读类加载器及其层次结构功能。如果我调用以下代码 -

ClassA a=  Class.forName("com.test.ClassA")

根据我的理解,现在它将在应用程序类加载器的帮助下被初始化并加载到内存中。我有以下问题:

  1. 如果我再次调用上面的代码会发生什么?是否会在内存中为“ClassA”创建新实例,或者它会返回相同的已加载类引用?
  2. 如果是,按照这个post javarevisited,“通过使用单独的 ClassLoader,您还可以从多个来源加载相同的类,它们将在 JVM 中被视为不同的类”它有什么用?

最佳答案

  1. 你会得到同样的类(class)。只是测试一下。第二次加载它并检查是否 a1 == a2
  2. 此功能最常使用的可能是在应用服务器中:您可以在单个服务器中部署多个 Web 应用程序,并且所有应用程序都可以使用相同的类。但他们不应该共享静态变量。如果一个使用库 1.0 中的类 Foo,另一个使用库 2.0 中的类 Foo,应该没有问题。因此需要使用不同的类加载器加载相同的类。

关于java - 调用 Class.forName() 两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37853337/

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