无法定义内部类的静态实例[重复]

问题描述 投票:-3回答:1

我有一个MainActivity类,在其中定义了一个InnerClass。我想拥有一个此InnerClass的常量并使它静态以将其传递到其他类,但是它似乎不起作用...

这里是我的问题的草图:

public class MainActivity {

   final public static InnerClass in = new InnerClass();

   public class InnerClass {

   }

}

我收到错误:

'com.aydinabiar.rubikscubeprototype.MainActivity.this' cannot be referenced from a static context

有人可以向我解释错误以及如何解决吗?

java class static
1个回答
0
投票
public class InnerClass {

}

具有对创建它的外部类的实例的隐式引用:

public class InnerClass {
  private final MainActivity this$0;

  InnerClass(MainActivity this$0) {
    this.this$0 = this$0;
  }
}

[如果不存在MainActivity的实例,则无法创建此类的实例,因此无法在MainActivity的静态上下文中创建它。

最简单的解决方案是使InnerClass static(尽管它不再是内部类,而只是嵌套类)。

© www.soinside.com 2019 - 2024. All rights reserved.