java - 一个类的其他实例是否能够访问另一个类中的静态变量?

标签 java classloader static-variables

我有一个类,我知道该类将由 URLClassLoader 为它的每个实例加载,因此如果我在一个类中有一个静态变量,其他实例是否能够访问它?

例如,类MyClass由ClassLoader A和ClassLoader B加载,我想知道A加载的MyClass是否会与B加载的MyClass具有相同的静态字段。

所以基本上,以下陈述总是正确的:

A.loadClass("MyClass").getField("MyField").get(null).equals(B.loadClass("MyClass").getField("MyField").get(null));

最佳答案

静态变量在类加载器中是唯一的。 (对这些的引用是)值可能是相同的。使用 equals 可以,使用 == 不行。

编辑:每个类加载器将加载不同的类(它们甚至可以是不同的版本)。初始化的静态数据将会不同。来自不同类加载器的两个不同类可以具有相同值的变量(静态或非静态)。

关于java - 一个类的其他实例是否能够访问另一个类中的静态变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4941068/

相关文章:

java - 如何指定 class.getClassLoader() 返回哪个类加载器?

objective-c - 应用程序范围的变量访问 : static like Java?

c++ - 如何在继承类上初始化静态变量?

Java - 数组索引超出范围 - vector ?

Java:在运行时检索泛型参数值

java - 如何以编程方式设置相对布局中 TextViews 的对齐父右属性

java - 服务器未从 java tcp/ip 客户端接收数据

Java - 加载类路径之外的类。有什么选择

java - 如何让 Byte Buddy 将多种类型加载到同一个包装类加载器中

java设置表格中特定单元格的颜色