📅  最后修改于: 2020-09-26 09:28:28             🧑  作者: Mango
在方法内部创建的类在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));
}
}
规则:局部变量不能是私有的,公共的或受保护的。
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