首页 > 解决方案 > java 全局对象引用在本地没有改变

问题描述

我有一个全局标志来启用日志记录/禁用日志记录和一个类级别标志。

这是代码:

public class Utils {
    public static volatile boolean GLOBLE_LOG_FLAG = true;
}

public class TestClass {
    private static volatile Boolean LOCAL_LOG_FLAG = Utils.GLOBLE_LOG_FLAG;

    public void test() {
        System.out.println("LOCAL_LOG_FLAG: = " + LOCAL_LOG_FLAG);

        Utils.GLOBLE_LOG_FLAG = false;

        System.out.println("now LOCAL_LOG_FLAG: = " + LOCAL_LOG_FLAG);
    }
}

public static void main(String[] args) {
        TestClass class1 = new TestClass();
        class1.test();
}

Output:

LOCAL_LOG_FLAG: = true
now LOCAL_LOG_FLAG: = true

为什么LOCAL_LOG_FLAG我设置时不改变Utils.GLOBLE_LOG_FLAG = false;

如果 java 正在使用对象引用,它应该LOCAL_LOG_FLAG在我分配时更改为 falseUtils.GLOBLE_LOG_FLAG = false;不是吗?我在这里有什么错误?

谢谢

标签: java

解决方案


推荐阅读