所以,让我说我有这个类调用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时,它会返回一个地址。我该如何解决这个问题?
答案 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;你的问题将得到解决
谢谢:)