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