私は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クラスは静的ではなく、内部に静的変数を宣言することができました。 2番目のコードサンプルではどうして私は同じことをすることができません。
ご協力いただければ幸いです。ありがとう。 :)
他の方法は、チャーリー・クラスは、静的作ることになり、それへのその他のアクセス方法。言及する価値があるかもしれない – Aelop
を参照してください。 Javaにこのような制限がある理由はありますか?これは、Java VMが外部クラスと異なる内部クラスを扱うことを意味しますか? – FunnyFunkyBuggy
@Aelop Right..私はちょうど私の答えを更新しました。 – iMBMT