从内部类更新实例变量的良好实践或不良实践

时间:2017-05-03 09:42:37

标签: java

假设我在另一个班级Child内有一个私人(内部)班级Parent

public class Parent {
   private boolean isBusy;
   private Child child = new Child();

   public void doSomething() {
      child.playToy();
   }

   private class Child {

     protected void playToy() {
          isBusy = true;
     }
   }
}

如上所述,Parent类具有布尔实例变量isBusy,私有内部类Child具有更新该布尔值的函数playToy()。从内部类更新上层类中定义的实例变量是糟糕的做法吗?如果这是不好的做法,有什么缺点?

3 个答案:

答案 0 :(得分:3)

因为它是一个私人课程,它只会在外部课程中实例化,所以我没有看到任何缺点。这个概念实际上很常见,例如内部类扩展了一个操纵外部字段的监听器。

答案 1 :(得分:1)

由于Child是私有类,并且只能由Parent实例化,因此我没有看到任何缺陷。

当然,如果你在Child实现中处理Parent的多个实例,而不是你需要处理并发,但这取决于你正在做的事情。

答案 2 :(得分:0)

不,没有问题。您可以根据需要更改变量的值。