3
我是java的新手。我正在閱讀一些關於靜態變量的文章。當我試圖實現我的學習時,我遇到了一個關於靜態變量的問題。這是第一個代碼示例。在Java中的非靜態類中聲明靜態變量
public class Human {
// in Human.java
public static int population = 0;
public static void main(String[] argv) {
System.out.println(population);
}
}
此代碼工作正常,結果爲0。 但對於下面的代碼,我是不允許編譯。
public class Human {
// in Human.java
public class Charlie extends Human {
public static int number = 0;
}
public static void main(String[] argv) {
System.out.println(new Human().new Charlie().number);
}
}
中出現錯誤:場數不能聲明在非靜態內部類的靜態的,除非有一個常量表達式
我很困惑這種情況初始化。對於第一個代碼示例,我的Human類是非靜態的,我可以在其中聲明一個靜態變量。我爲什麼不能爲我的第二個代碼示例做同樣的事情。
任何幫助,將不勝感激。謝謝。 :)
其他方式將使得查理類的靜態。可能值得一提 – Aelop
我明白了。 Java有這個限制的原因嗎?這是否意味着Java虛擬機會處理與外部類不同的內部類? – FunnyFunkyBuggy
@Aelop對..我剛剛更新了我的答案。 – iMBMT