我是否需要顯式調用構造函數來創建單個實例,還是自動調用默認構造函數?
你需要調用(使用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
。這使得它變得毫無用處。
第二個問題是上面的代碼在語法上是無效的。您不能在Java中的數組聲明中包含大小。大小隻能在數組初始化中指定。
這裏是上面的語法有效的版本:
private static final ClassA groupA[];
或更好
private static final ClassA[] groupA;
這兩種形式意味着同樣的事情,但Java的風格指南說是不好用古老的C語法。並且請注意,我們仍然有初始化數組需要處理的問題。
你爲什麼不試試看? –