Java:nullPointerException创建Object

时间:2013-10-19 17:11:40

标签: java arraylist

所以,让我说我有这个类调用A,它有一个

的构造函数
       A(String someA, int someB , String[] someC)

在另一个班级我创建了一个主要的 将其作为类变量

    private static String[] someC = new String[4];
    private static ArrayList<A> thisA;

然后我从dat文件中提取一些信息

                someA= readFile.nextLine(); //some normal string such as  bob Billy
                someB= readFile.nextInt();   //some integer like 5
                unitCode[0] = readFile.next(); //some code such as HITHERE34
                unitCode[1] = readFile.next(); // all the 4 is the same style
                unitCode[2] = readFile.next();
                unitCode[3] = readFile.next();
         thisA.add(new A(someA,someB,unitCode); // create object and store into array list

我试过运行它,它给了我一个nullPointerException错误 当我打印unitCode时,它会返回一个地址。我该如何解决这个问题?

3 个答案:

答案 0 :(得分:2)

在能够执行thisA之类的方法之前,您必须初始化列表.add。只要没有初始化对象,就无法运行集合的方法。

thisA = new ArrayList<A>();

如果你可以估计,你需要多少条目(四舍五入),你可能会对这个构造函数感兴趣:

thisA = new ArrayList<A>(120);

初始化列表后,您可以添加元素。

答案 1 :(得分:2)

private static ArrayList<A> thisA;

这只是会员的声明。默认情况下,JVM将初始化“thisA”(或任何引用类型成员)为空值。要解决此问题,您需要手动将其初始化为其他内容:

private static ArrayList<A> thisA = new ArrayList<A>();

答案 2 :(得分:0)

正如你所写的“private static ArrayList thisA;” ,这意味着只创建引用变量并将其存储在堆栈内存中,但堆内存中没有创建任何对象,因此thisA当前指向没有对象且默认值为null,在这里您尝试访问该对象使用甚至没有创建的变量,因此你得到nullPointerException。

所以make it as,private static ArrayList thisA = new ArrayList;你的问题将得到解决

谢谢:)