Java:怎么不编译?

时间:2009-11-04 06:35:03

标签: java enums

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

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

编译器报告:

enum declarations allowed only in static contexts.

但是当我把Enum放在A级时,一切都还好。

这是非常令人惊讶的。我不认为我在C ++中遇到这个问题。

1 个答案:

答案 0 :(得分:11)

你可以通过使B静态来解决这个问题:

static class B { ...

这更能反映C ++对嵌套类的作用。默认情况下(不包含static),B的实例包含对A实例的隐藏引用。

可以在Java inner class and static nested class找到对差异的一个很好的解释。