個々のインスタンスを作成するためにコンストラクタを明示的に呼び出す必要がありますか、またはデフォルトのコンストラクタが自動的に呼び出されますか?
(new
!を使用して)コンストラクタを5回呼び出す必要があります。例えばそれは
private static final ClassA groupA[] = new ClassA[] {
new ClassA(), new ClassA(), new ClassA(), new ClassA(), new ClassA()};
または
private static final ClassA groupA[] = new ClassA[5];
static { // NB: this is a static initializer block!
for (int i = 0; i < groupA.length; i++) {
groupA[i] = new ClassA();
}
}
このコードは5参照用のスペースを割り当て、nullにそれらを初期化するが、何もしていない場合、
... ...
次のコードはなぜですか無効ですか?
private static final ClassA groupA[5];
上記のコードは、さらに、アレイを作成していません。そして、それが行われていないので、おそらくstatic
イニシャライザブロックが下がっていないので、static
は初期化できません。それはそれを役に立たないものにします。
第2の問題は、上記のコードが構文的に無効であることです。 Javaの配列宣言にはサイズを含めることはできません。サイズは、配列の初期化でのみ指定できます。ここで
は、上記の構文的に有効なバージョンです:
private static final ClassA groupA[];
またはより良い
private static final ClassA[] groupA;
これら二つの形式は同じことを意味しますが、Javaのスタイルガイドラインは、それを使用するのはよくないと言います古いCのような構文です。そして、配列を初期化するという問題はまだ解決していないことに注意してください。
なぜあなたはそれを試してみませんか? –