【发布时间】:2014-04-18 16:06:41
【问题描述】:
我正在尝试在循环中实现一个内部类,并且遇到了一个有趣的情况。内部类有方法,但是,当我尝试访问变量时,Netbeans 给我一个编译器错误并告诉我将 int 设为 final。
由于int是一个循环变量,它不能是final的。我尝试创建新变量并将它们等同于循环变量,但这仍然会引发相同的错误。
这是基本语法(伪代码):
for(int i = 0; i < 10; i++)
{
panels[i].printI(new printI(){System.out.println(i);});
}
有什么想法吗?
【问题讨论】:
-
你不能在循环的第一行使用
final int j = i;,然后将j传递给System.out.println吗? -
但是,如果我这样做,那么循环将无法增加 j,因为值会被锁定?
-
确实如此。请参阅 qqilihq 的回答。
-
感谢您的回复。但是为什么内部类不能访问超出其范围的局部变量呢?
标签: java inner-classes