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