修改内部类Java中的变量



我有一个Java内部类的问题,我无法解决。假设你有

class Outer
{
     int outer = 0;
     class Inner
     {
          int inner = Outer.this.outer; //(or just outer as it is not shadowed)
          inner = 3; //or whatever, even outer = 3
     }
}

好吧,当我写最后一个作业时,我得到了编译错误

Syntax error on token ";", , expected

在先例线上。

为什么我不能修改内心?

谢谢!

不能在方法之外有语句。一种技术是使用实例初始化器块:

class Outer
{
     int outer = 0;
     class Inner
     {
          int inner = Outer.this.outer; //(or just outer as it is not shadowed)
          // instance initializer block:
          {
              inner = 3; //or whatever, even outer = 3
          }
     }
}

或者,定义一个构造函数:

class Outer
{
     int outer = 0;
     class Inner
     {
          int inner = Outer.this.outer; //(or just outer as it is not shadowed)
          Inner() {
              inner = 3; //or whatever, even outer = 3
          }
     }
}

您必须将代码放在方法或构造函数中:

class Outer
{
     int outer = 0;
     class Inner
     {
          int inner = Outer.this.outer; 
          public Inner() {
               inner = 3; 
          }
          public increment() {
               inner++;
          }
      }
}

inner的赋值必须在方法或构造函数内部,而不是在类中"松散"。

您需要包括以下行:

 inner=3;

在内部类的方法中。

Yuo无法在方法外部直接初始化inner = 3;。确保inner = 3;在任何方法或构造函数中。

 public Inner() 
 {
       inner = 3; 
 }

最新更新