我尝试编写简单的程序,该程序适用于嵌套类。我注意到,嵌套类无法更改(或者我犯了错误)封闭类字段:
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();
}
输出为假
。但我期望true
。
我做错了什么?
最佳答案
我猜是这样,您仍然看到 bool 值为 false 的原因是因为它被设置了两次(两次取反)。
来到这里
private NestedClass nestedClass = new NestedClass();
第二次
MyClass(){
nestedClass = new NestedClass();
}
两者都调用 NestedClass 的构造函数两次,从而两次否定它,导致 false
->true
->false
。
关于java - 嵌套类不会更改封闭类字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41521140/