Java 为什么JDK7不允许方法本地内部类访问自己的方法';s局部变量

Java 为什么JDK7不允许方法本地内部类访问自己的方法';s局部变量,java,inner-classes,Java,Inner Classes,在这段代码中,我在方法局部MyInner类中使用了doStuff()的变量mloc 我的编译器编译这段代码,并通过JDK8运行这段代码。方法本地内部类变量可以在Java 8中访问,但不能在Java 7中访问。 我使用java版本“1.8.031”,它可以编译。但是它不能在Java 7中编译。在Java SE 8中,局部类可以访问final或有效final的封闭块的局部变量和参数。一个变量或参数的值在初始化后从未改变,它实际上是最终的。是的,在我安装JDK 8之后,这个问题就不再存在了。 clas

在这段代码中,我在方法局部MyInner类中使用了doStuff()的变量mloc
我的编译器编译这段代码,并通过JDK8运行这段代码。

方法本地内部类变量可以在Java 8中访问,但不能在Java 7中访问。
我使用java版本“1.8.031”,它可以编译。但是它不能在Java 7中编译。

在Java SE 8中,局部类可以访问final有效final的封闭块的局部变量和参数。一个变量或参数的值在初始化后从未改变,它实际上是最终的。

是的,在我安装JDK 8之后,这个问题就不再存在了。
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();
   }
}