2013-02-07 78 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是編譯時間常數值。因此它是被允許的。

相關問題