为什么 JDK7 不允许方法局部内部类访问其自己的方法的局部变量


class MyOuter2{
private String x;
void doStuff(){
    int mloc= 100;
    x ="Outer class variable";
    class MyInner{
        public void seeOuter(){
            System.out.println("Access both: " + x+" and " + mloc);
            System.out.println("Inner class ref is " + this);
            System.out.println("Outer class ref is " + MyOuter2.this);
        }
    }
    MyInner MethodInnerClass = new MyInner();
    MethodInnerClass.seeOuter();
  }
}
public class InnerClass {
   public static void main(String[] args) {
      MyOuter2 outer = new MyOuter2();
      outer.doStuff();
   }
}

在此代码中,我使用dostuff()的变量MLOC在方法本地myinner类中我的编译器编译此代码,还通过JDK8运行此代码。

在Java SE 8中,本地类可以访问最终>有效最终的封闭块的本地变量和参数。一个变量或参数在初始化后永远不会更改其值有效地

方法 - 本地内部类变量可以在Java 8中访问,但不能在Java 7中访问。我使用Java版本" 1.8.0_31",并且可以编译。但是它不能在Java 7中编译。

最新更新