java - 嵌套类不会更改封闭类字段

标签 java inner-classes static-classes

我尝试编写简单的程序,该程序适用于嵌套类。我注意到,嵌套类无法更改(或者我犯了错误)封闭类字段:

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/

相关文章:

java - 如何检查数组中的所有值是否都具有特定值?

java - 如何将准备好的语句从电子表格行项目循环到 derby 数据库

java - 如何将类中创建的所有对象存储在 Java 中该类返回的单个数组中?

c# - 可以从 xml 返回成员值的类

java - 做 !(!a && b) 比 || 效率低吗!乙?

java - Jackson 反序列化忽略属性无法与 @JsonView 正常工作

python - 在另一个类中定义一个类并调用父方法

Java 内部类设计的好处

c# - 在 C# 中使用作为参数传递的类型的方法

java - 私有(private)的嵌套类(内部或静态)是否可以具有可公共(public)访问的方法?