Java Local内部类

本文概述

  • Java本地内部类示例
  • Java Local内部类的规则
在方法内部创建的类(即方法内部)在Java中称为本地内部类。如果要调用本地内部类的方法, 则必须在方法内部实例化此类。
Java本地内部类示例
public class localInner1{ private int data=http://www.srcmini.com/30; //instance variable void display(){ class Local{ void msg(){System.out.println(data); } } Local l=new Local(); l.msg(); } public static void main(String args[]){ localInner1 obj=new localInner1(); obj.display(); } }

立即测试
输出:
30

编译器生成的内部类
在这种情况下, 编译器将创建一个名为Simple $ 1Local的类, 该类具有外部类的引用。
import java.io.PrintStream; class localInner1$Local { final localInner1 this$0; localInner1$Local() { super(); this$0 = Simple.this; } void msg() { System.out.println(localInner1.access$000(localInner1.this)); } }

规则:局部变量不能是私有的, 公共的或受保护的。Java Local内部类的规则1)本地内部类不能从方法外部调用。2)局部内部类在JDK 1.7之前不能访问非最终局部变量。从JDK 1.8开始, 可以在局部内部类中访问非最终局部变量。具有局部变量的局部内部类的示例
class localInner2{ private int data=http://www.srcmini.com/30; //instance variable void display(){ int value=50; //local variable must be final till jdk 1.7 only class Local{ void msg(){System.out.println(value); } } Local l=new Local(); l.msg(); } public static void main(String args[]){ localInner2 obj=new localInner2(); obj.display(); } }

立即测试
【Java Local内部类】输出:
50

    推荐阅读