为什么内部类允许“静态最终”字段?

时间:2013-02-07 05:38:35

标签: java static inner-classes

我对在java中使用Inner Classes有疑问。这是我的代码。

代码:

public class Test{

      public class InnerClass{
             public static int num = 10;
      }       

}

这是不允许的。我收到错误消息“字段num不能声明为静态;静态字段只能在静态或顶级类型中声明”。

public class Test{

      public class InnerClass{
             public static final int num = 10;
      }       

}

但这是允许的。我没有将InnerClass声明为静态和顶级元素,但它是如何工作的?

1 个答案:

答案 0 :(得分:7)

引用链接的答案。

  

8.1.2 Inner Classes and Enclosing Instances
  ...
  内部类可能不会声明静态成员,除非它们是编译时常量字段(第15.28节)。

final在初始化时使它们保持不变,= 10是编译时常量值。因此是允许的。