java-向向量中添加值时抛出NullPointerexception

我正在尝试初始化一个向量,该向量具有初学者字符串形式的整数1到n.

这是我对向量的声明.

 Vector<String> candidatesSet,frequentItemSet,mFCandidatesSet,mFSet = new <String>Vector();

我用来初始化的循环是

for(int i=0; i<crows; i++)
        {
           candidatesSet.add(Integer.toString(i+1));
        }

在这里,我们获得运行时变量crows的值.

但是它在我向对象添加字符串的行中抛出了NullpointerException.

我尝试将向量初始化为null

 candidatesSet = null;

但这没用

解决方法:

首先,类似的东西是错误的:

Vector<String> set = new <String>Vector();

正确的语法是这样的:

Vector<String> set = new Vector<String>();

第二,如果您执行以下操作:

Vector<String> set1,set2,set3,set4,set5 = new Vector<String>();

…只有set5会被初始化.每个变量必须独立初始化.您可以执行以下操作:

Vector<String> set1,set2,set3,set4,set5;
set1 = set2 = set3 = set4 = set5 = new Vector<String>();

…但是所有变量都将指向同一个Vector,对一个变量的修改将影响所有其他变量.您必须分别初始化每个变量.

第三,这样做:

candidatesSet = null;

如果尚未初始化候选人集,则不会执行任何操作,因为非原始实例变量无论如何都将初始化为null.这就是您的问题,您正在对null对象调用.add(String),这会导致NullPointerException.

解决这些问题将使您的代码正常工作,但还有最后一个问题. Vector是有点过时的类,它已被Java Collections API取代.尝试使用ArrayList代替Vector,如下所示:

List<String> candidatesSet = new ArrayList<String>();

这将使您的代码更高效,更简单.

上一篇:java-Primefaces datatable选定的行无法使用viewscope工作


下一篇:java-NullPointerException-这怎么可能发生?