创建对象列表时出错 - NullPointerException

时间:2015-05-06 16:40:15

标签: java list arraylist nullpointerexception

这应该是相当简单但我无法弄清楚我的错误。首先,我正在尝试编写一个程序,该程序将接受用户输入并将输入作为对象添加到名为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对象的实例时,我确实有这个工作。

1 个答案:

答案 0 :(得分:0)

按如下方式更改您的代码:

public class Group {
   List<ListObject> aList = new ArrayList();

   public Group() {
      super();
   }

   public void addObject(ListObject aName) {
      aList.add(aName);     
   }
}

您的代码存在两个问题:

  1. 您在构造函数中重新定义的aList局部变量隐藏了aList实例变量。您最终在构造函数中初始化局部变量aList,而不是初始化aList实例变量。因此,实例变量始终为null,当您在空引用上调用NullPointerException中的add方法时,您得到addToList

  2. 您的列表声明为List<ListObject>。这意味着列表只能包含ListObject类型的对象。这称为type-safetyaddObject方法的参数应更改为ListObject。另请注意,您需要创建ListObject并将其传递给addObject方法。