本文概述
在方法内部创建的类(即方法内部)在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();
}
}
立即测试
输出:
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=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();
}
}
立即测试
输出:
50
评论前必须登录!
注册