关于方法内的内部类使用方法参数的问题

guitacom 2006-05-06 12:23:29
如以下代码片段:
public class Outer{
private int m;
public void go(int x, final int y){
int a;
final int b;
class Inner {
public void method() {
System.out.println("m="+m);
System.out.println("x="+x); //不合法
System.out.println("y="+y);
System.out.println("a="+a); //不合法
System.out.println("b="+b);
}
}
}

关于为什么使用final关键字的解释有如下几种观点:
1.因为final变量是一个编译时常量,而内部类在编译时要确定所有变量的值,所以只能使用编译时常量,即要使用final变量。
2.《corejava》中解释:Thus, it is guaranteed that the local variable and the copy that is made inside the local class always have the same value.
3.要确此变量在内部类的使用过程中不改变引用值。
以上是从各处收集的解释,我认为都不完全正确,请大家讨论一下。
...全文
79 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
killme2008 2006-05-06
  • 打赏
  • 举报
回复
果定义了某个匿名inner class,并且希望用到定义于匿名inner class之外的某个对象,编译器会限制该外部对象必须为final

这个问题在TIJ里面已经有详细讨论

23,407

社区成员

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

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