gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 00:46:17 31 4
gpt4 key购买 nike

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

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