内部类方法访问父方法的变量

时间:2015-01-26 01:23:08

标签: java

为什么方法不能访问变量c?我知道它无法访问变量,但我试图理解它为什么没有。

public class A {
  public void m() {
    class B implements I {
      public void r() {
        . . .
      }
    }
    final int c;
    . . .
  }
}

2 个答案:

答案 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)

您的代码中存在两个问题:

  1. 变量c是最终的,但未分配值。在声明它时,您必须将其设置为某种东西。
  2. 如果您想从方法c访问r(),则必须先声明它,即在声明方法r()之前。
  3. 解决此问题的最简单方法是将变量c移至A类,而不是在类B中声明它。