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>();