我越是谷歌,我就越困惑。
我从CSV中引入一个未知长度的名称列表以及其他一些细节,然后我需要将其转换为Person对象并存储在名为people的列表中,这是类Club的实例变量,a基本上是其成员名单。
这是一个非常简化的版本,我需要做一些更复杂的事情,我需要循环浏览一个文件,为每一行创建对象,然后我需要添加到列表集合中。
当我运行我的代码时,我一直收到nullPointerException错误,而且我很难避免如何避免它。我猜测我创建新对象时的变量p需要在每个循环上进行更改,但我不认为可以动态更改变量吗?
无法想象每次如何使用有效的非null引用将对象提交到集合。非常感谢任何帮助。我试图在下面的代码中删除所有不必要的东西。
谢谢
//class arraylist instance variable of class "Club"
private ArrayList<Person> people;
//class constructor for Club
public Club()
{List<Person> people = new ArrayList<>();}
public void readInClubMembers()
{
//some variables concerning the file input
String currentLine;
String name;
String ageGroup;
while (bufferedScanner.hasNextLine())
{
//some lines bringing in the scanner input from the file
name = lineScanner.next();
ageGroup = "young";
Person p = new Person(); // i guess things are going wrong around here
people.add(p);
p.setName(name);
p.setAgeGroup(ageGroup);
}
}
答案 0 :(得分:3)
在构造函数中移除List<Person>
之前的people = …
,否则您在构造函数中声明了一个新的局部变量people
,遮蔽字段 {{1} (然后从未使用过)。这使得类字段未初始化(people
),然后导致NPE。
您想要的是初始化字段null
:
people
显示差异:
public Club() {
// you can also use "this.people = …" to be explicit
people = new ArrayList<>();
}