我有一个类,我知道该类将由 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/