这应该是相当简单但我无法弄清楚我的错误。首先,我正在尝试编写一个程序,该程序将接受用户输入并将输入作为对象添加到名为aList
的列表中。我有两个名为Group
的班级和一个名为ListObject
的班级。
以下是Group
类代码
public class Group
{
List<ListObject> aList = new ArrayList();
public Group()
{
}
public void addObject(Object aName)
{
aList.add(aName);
}
}
这是我的ListObject类
public class ListObject
{
private String name;
public int value;
/**
* Constructor
*/
public ListObject(String aName)
{
super();
this.name = firstName;
this.value = 10;
}
}
我需要Group类中的方法来获取用户输入,创建该名称的对象,然后将其添加到列表aList
中,并将该列表中的所有对象指定为值-1以开始用。出于某种原因,我被返回一个NullPopinterException。希望你能指出我错过的东西。请注意,当我只是添加字符串而不是ListObject
对象的实例时,我确实有这个工作。
答案 0 :(得分:0)
按如下方式更改您的代码:
public class Group {
List<ListObject> aList = new ArrayList();
public Group() {
super();
}
public void addObject(ListObject aName) {
aList.add(aName);
}
}
您的代码存在两个问题:
您在构造函数中重新定义的aList
局部变量隐藏了aList
实例变量。您最终在构造函数中初始化局部变量aList
,而不是初始化aList
实例变量。因此,实例变量始终为null,当您在空引用上调用NullPointerException
中的add
方法时,您得到addToList
。
您的列表声明为List<ListObject>
。这意味着列表只能包含ListObject
类型的对象。这称为type-safety
。 addObject
方法的参数应更改为ListObject
。另请注意,您需要创建ListObject
并将其传递给addObject
方法。