引用静态内部类中的非静态变量

alg*_*der 4 java oop nested-class inner-classes

我需要从静态类中的方法引用顶级类的变量.

此方法应该作用于顶级类的唯一实例,因此我觉得我不应该在静态类中实例化顶级类.

基本上我想要的东西

public class TopLevel{
   // private
   int innerV

   public static class Inner implements X {
     for(i=0; i<innerV,i++){
         doSomething 
     }
   }
}
Run Code Online (Sandbox Code Playgroud)

是否可以this.innerVfor循环和类似的地方说出或类似的东西?

Pét*_*rök 8

static内部类,您不能直接引用外部类的(非静态)成员.如果删除静态限定符,它将起作用,因为非静态内部类的实例隐式绑定到包含类的实例,因此它们可以直接引用其成员.

声明内部类static会删除此链接,因此您需要将外部类的实例作为参数传递给内部类方法(或其构造函数),或者在方法内创建它.