为什么方法不能访问变量c?我知道它无法访问变量,但我试图理解它为什么没有。
public class A {
public void m() {
class B implements I {
public void r() {
. . .
}
}
final int c;
. . .
}
}
答案 0 :(得分:2)
因为c
是一个局部变量,并且在声明本地类B
时不在范围内。
如果您在声明类之前声明它并正确初始化它,则可以使用它
class A {
public void m() {
final int c = 42;
class B implements I {
public void r() {
System.out.println(c);
}
}
}
}
答案 1 :(得分:1)
您的代码中存在两个问题:
c
是最终的,但未分配值。在声明它时,您必须将其设置为某种东西。c
访问r()
,则必须先声明它,即在声明方法r()
之前。解决此问题的最简单方法是将变量c
移至A
类,而不是在类B
中声明它。