繁体   English   中英

为什么JDK7不允许方法本地内部类访问其自身方法的本地变量

[英]Why JDK7 not allow method local Inner Class to access its own method's local variables

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();
   }
}

在此代码中,我在本地MyInner类的方法中使用doStuff()的变量mloc,编译器将编译此代码,并通过JDK8运行此代码。

在Java SE 8中,局部类可以访问final有效的final的局部变量和封闭块的参数。 变量或参数的值在初始化后再也不会更改,因此实际上是final

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM