嵌套 class 不会更改封闭的 class 字段

Nested class doen't change enclosing class field

我尝试编写简单的程序,它与嵌套 class 一起工作。我注意到,嵌套的 class 不能更改(或者我做错了)包含 class 字段:

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.