Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
内部类Java中的Modify变量_Java_Variables_Inner Classes - Fatal编程技术网

内部类Java中的Modify变量

内部类Java中的Modify变量,java,variables,inner-classes,Java,Variables,Inner Classes,我无法解决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 e

我无法解决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; 
          public Inner() {
               inner = 3; 
          }

          public increment() {
               inner++;
          }
      }
}
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++;
          }
      }
}
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
          }
     }
}

您需要包括以下行:

 inner=3;

在内部类的方法中

Yuo不能直接初始化
internal=3外部方法。确保
内部=3在任何方法或构造函数中

 public Inner() 
 {
       inner = 3; 
 }