java:为什么它不编译?

avwztpqn  于 2021-06-30  发布在  Java
关注(0)|答案(1)|浏览(332)

为什么这段代码不能编译?

class A
{
  class B
  {
    public enum Enum   <-- this line
    {
      AD,
      BC
    }
  }
}

编译器报告:

enum declarations allowed only in static contexts.

但是当我把枚举放在类a中时,一切都好了。
这是相当令人惊讶的。我想我在c++中没有这个问题。

vc9ivgsu

vc9ivgsu1#

您可以通过使b为静态来修复此问题:

static class B { ...

这更接近地反映了c++对嵌套类的作用。默认情况下(无 static ),示例b包含对示例a的隐藏引用。
java内部类和静态嵌套类可以很好地解释这些差异。

相关问题