嵌套 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
.
我尝试编写简单的程序,它与嵌套 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
.