普通內部類靜態成員
阿新 • • 發佈:2018-12-26
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;
}
}