我尝试编写简单的程序,该程序可用于嵌套类。我注意到,嵌套的类不能更改(或我做错了)封闭类字段:

public class MyClass {

    private boolean bool = false;
    private NestedClass nestedClass = new NestedClass();

    private class NestedClass {

        private void print(){
               System.out.println(bool);
        }

        NestedClass(){
            bool = !bool;
        }
}

    MyClass(){
        nestedClass = new NestedClass();
    }

    public void getInfo(){
        nestedClass.print();
    }
}


创建新的MyClass实例后,bool的值不变:

public static void main(String[] args) {
    MyClass myClass = new MyClass();
    myClass.getInfo();
}


输出为false。但是我期望true
我做错了什么?

最佳答案

我想是的,您仍然看到bool的值为false的原因是因为它两次被设置(两次被否定)。

曾经在这里

private NestedClass nestedClass = new NestedClass();


第二次

MyClass(){
    nestedClass = new NestedClass();
}


两者都两次调用NestedClass的构造函数,这两次将其取反,从而导致false-> true-> false

10-08 16:06