Java本地内部类
在方法内部创建的类(在Java中称为本地内部类)。如果要调用本地内部类的方法,则必须在方法内部实例化该类。
Java本地内部类示例
public class localInner1{
private int data=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();
}
}
输出:
由编译器生成的内部类
在这种情况下,编译器将创建一个名为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 本地内部类的规则
注意: 1)不能从方法外部调用本地内部类。
注意: 2)局部内部类在JDK 1.7之前不能访问非最终局部变量。从JDK 1.8开始,可以在局部内部类中访问非最终局部变量。
带有局部变量的局部内部类的示例
class localInner2{
private int data=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();
}
}
输出: