关于局部内部类的问题

jspenguin 2008-01-27 04:08:13
package 内部类例子;

public class Part_Inner {
public int out1;
public void method1 (final int p1,int p2){
int local1=1;
final int local2=2;
class inner{
public int inner1=out1;
public int inner2=p1;
// public int inner3=p2; //报错
// public int inner4=local1;//报错
public int inner5=local2;
public void method2(){
// System.out.println(p2);//报错
// System.out.println(local1);//报错
}
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
}
}
为什么局部内部类无法访问他所在方法的一般成员变量local1,而只能够访问final修饰的变量local2, 但是却能访问外部类的一般变量ou1;
请问这是什么原因啊??
...全文
136 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjc_love 2008-01-28
  • 打赏
  • 举报
回复
java规定局部内部类只能访问方法内的final类型的变量

正解
jy02209334 2008-01-27
  • 打赏
  • 举报
回复
java中方法中的数据是保存在堆栈中的,而对象是保存在堆中的,只有当你方法执行的时候堆栈里才有方法内的变量数据,当你这个方法执行完后里面的数据可能已经不存在了,而你的对象却仍然存在,这时你如何保证访问方法内的数据,所以java规定局部内部类只能访问方法内的final类型的变量,而你的ou1也是堆里的数据当然就可以访问.
老紫竹 2008-01-27
  • 打赏
  • 举报
回复
不需要理由!

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧