Java局部内部类
1 什么是Java局部内部类
Java语言中,在方法内部创建的类称为局部内部类。如果要调用局部内部类的方法,则必须在方法内部实例化这个类。
2 Java局部内部类的例子
package com.yiidian;
/**
* 一点教程网: http://www.yiidian.com
*/
/**
* Java局部内部类的例子
*/
public class Demo{
private int data=30;//成员变量
void display(){
//局部内部类
class Local{
void msg(){System.out.println(data);}
}
Local l=new Local();
l.msg();
}
public static void main(String args[]){
Demo obj=new Demo();
obj.display();
}
}
输出结果为:
30
3 Java局部内部类工作原理
Java局部内部类的原理是,Java编译器将创建一个名为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));
}
}
注意:局部变量不能是private,public或protected。
4 Java局部内部类的使用规则
- 局部内部类不能从方法外部调用。
- 局部内部类在JDK1.7之前不能访问非final的局部变量。从JDK1.8开始,可以在局部内部类中访问非final局部变量。
5 带有局部变量的局部内部类
package com.yiidian;
/**
* 一点教程网: http://www.yiidian.com
*/
/**
* 带有局部变量的Java局部内部类的例子
*/
class Demo{
private int data=30;//成员变量
void display(){
int value=50;//仅在jdk 1.7之前,局部变量必须是final
class Local{
void msg(){System.out.println(value);}
}
Local l=new Local();
l.msg();
}
public static void main(String args[]){
Demo obj=new Demo();
obj.display();
}
}
输出结果为:
50
热门文章
优秀文章