2013-02-07 51 views
2

我有一个在java中使用内部类的疑问。这是我的代码。为什么在内部类中允许“static final”字段?

代码:

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

错误不会告诉你答案吗?如果这个类是静态的,或者它是顶级的,它是允许的。 –

+4

@KarthikT - 这不是同一个问题。 –

+0

这个问题进一步问了为什么允许一个常量('static final')字段。 –

回答

6

引用链接的答案。除非他们是编译时常领域(§15.28)

8.1.2 Inner Classes and Enclosing Instances
...
内部类可以不声明静态成员,

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

相关问题