1. 程式人生 > >普通內部類靜態成員

普通內部類靜態成員

java普通內部類不能有static成員,為什麼可以有final static成員?

最近在重溫”thinking in java”鞏固java基礎知識,讀到7.6.4 static內部類的講解中,提到static成員只能位於一個類的外部級別,所以普通內部類不可擁有static資料。不是很懂,於是寫程式碼驗證一下。

public class Parcle {
    private  class PContents{
        private static int a = 5;
    }
}

IDE的確報錯,提示

Inner classes cannot have static declarations

於是網上查詢答案,大概明白了,普通內部類是依賴於外部類例項的,有外部類例項才能有內部類。而static成員是類所有,與例項無關,當普通內部類有靜態成員時就出現矛盾了。所以普通內部類是無法擁有靜態成員的。

本以為問題就此結束,但當我對靜態成員加上final修飾時,IDE不報錯了。目前還沒理解為什麼會這樣的,初步想法時static和final static成員在記憶體的儲存位置有關,先留下問題,待日後查閱相關資料再解答。

public class Parcle {
    private  class PContents {
        private final static
int a = 5; } }