import java.util.*;
public Class C
{
final Vector v;
C()
{
v=new Vector();
}
C(int i)
{
//Here, it is an error. v might not have been initialized.
}
public void someMethod()
{
System.out.println(v.isEmpty());
}
public static void main(String[] args)
{
C c=new C();
c.someMethod();
}
}
上面的代碼是一個編譯時錯誤。我知道,但它說(在NetBeans中)變量v應該被初始化。當我在重載的構造函數中初始化它時,它修復了這個問題並打印出「true」。我的問題是爲什麼我應該在重載版本的構造函數中重新初始化它(我已經在默認構造函數中初始化了它),我甚至沒有使用重載版本。爲什麼?需要在Java
一種可能性是將其更改爲最終Vector v = new Vector();'。那麼你將不必在構造函數中編寫它。 – Vlad
這是太正確了,弗拉德,但它不會讓v稍後被初始化,因爲它是最終成員,如果需要的話。 – Bhavesh
如果你通過構造函數來做同樣的事情。如果你需要重新分配它,或者如果你不想初始化構建矢量,那麼它不是最終的。 – Vlad