Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法保存项目_Java_Nullpointerexception - Fatal编程技术网

Java 无法保存项目

Java 无法保存项目,java,nullpointerexception,Java,Nullpointerexception,我有这个项目类别 public class Item { private String id; private int count; private String name; public int getcount() { return this.count; } public Item(String name) { this.name=name; this.id = ""; }

我有这个项目类别

public class Item {

    private String id; 
    private int count;
    private String  name;


    public int getcount() {
        return this.count; 
    }

    public Item(String name) {
        this.name=name;
        this.id = "";
    }

    public Item(String id, String name) {
        this.name=name;
        this.id=id;
    }

    public Item(int count) {
        this.count=count;
    }

    public String getItemName() {
        return this.name;
    }

    public String getItemId() {
        return this.id;
    }

}
然后我有一个ItemSet类,它将包含项目列表

public  class ItemSet  extends ArrayList<Item> {

    private List<Item> hold;

    ItemSet(Item item) {
        this.hold.add(item);
    }

    ItemSet() {
        //throw new UnsupportedOperationException("Not yet implemented");
    }


    public List<Item> getItemSet() {
        return this.hold;
    }
}
问题是我越来越

Exception in thread "main" java.lang.NullPointerException
at ItemSet.<init>(ItemSet.java:25)
at Ap.main(Ap.java:30)
线程“main”java.lang.NullPointerException中的异常 在ItemSet.(ItemSet.java:25) 在Ap.main(Ap.java:30) 在哪里

ItemSet.java:25
this.hold.add(项目)

在哪里

Ap.java:30
指的是
ItemSet ItemSet=newitemset(i);//创建新项目集

请帮我找出我的错误

this.hold.add(item); 
hold(List)
是默认的
null
因为实例变量。您需要在添加项之前进行实例化。您对
null
结果
NullPointerException

例如:

ItemSet(Item item)
{
   hold = new ArrayList<Item>();
   this.hold.add(item);

}
ItemSet(项目)
{
hold=新的ArrayList();
此.保持.添加(项);
}
是否有任何扩展
ArrayList()的具体原因?
请尝试以下操作:

private List<Item> hold = new ArrayList<Item>();
private List hold=new ArrayList();
项目列表
类中


到目前为止,您编写的只是一个私有字段定义-您没有实例化
hold
对象(即,您没有创建列表),因此
hold
为空,因此NPE。

在使用
hold list
之前,您没有初始化

使用
ItemSet
中的以下代码初始化
hold


private List hold=new ArrayList()

以便我可以保存项目列表。我使用ArrayList有错吗?您不需要扩展ArrayList来保存项目。您可以像上面的示例那样实例化。如果要重写功能(或)使用超级类属性,则应扩展类。但是,在这种情况下,你也没有这样做。所以,不需要扩展。好的,谢谢你的信息。照你说的做。但是现在我无法迭代包含Items ItemSet I=t的ItemSet I;怎么做与你的答案无关。为什么不编辑现有答案?我看到一个删除和一个积极的答案。只是想确保它不是系统中的一个bug。
ItemSet(Item item)
{
   hold = new ArrayList<Item>();
   this.hold.add(item);

}
private List<Item> hold = new ArrayList<Item>();