[英]Add objects to an ArrayList from another class
大家好,我正在嘗試從另一個 class 向 ArrayList 添加對象,但我有一個 java.lang.NullPointerException。 這是我的代碼。
public class MLD {
private ArrayList<Entity> entityList;
public MLD() {
this.entityList = entityList;
}
public ArrayList<Entity> getEntityList() {
return entityList;
}
public void setEntityList(ArrayList<Entity> entityList) {
this.entityList = entityList;
}
}
public class MLDManaging {
private MLD mld;
public MLDManaging() {
this.mld = new MLD();
}
public void addEntity(Entity e1) {
mld.getEntityList().add(e1);
}
}
我主要這樣測試它:
MLDManaging m = new MLDManaging();
MLD mld =new MLD();
Entity e1 = new Entity("Entity 1", list1);
m.adde(e1);
m.addEntity(e1);
先感謝您
您需要在構造函數中初始化列表this.entityList = new ArrayList<>();
如下所示
public class MLD {
private ArrayList<Entity> entityList;
public MLD() {
this.entityList = new ArrayList<>();
}
public ArrayList<Entity> getEntityList() {
return entityList;
}
public void setEntityList(ArrayList<Entity> entityList) {
this.entityList = entityList;
}
}
您尚未初始化MLD
class 中的列表。
更好的方法是創建一個單獨的方法來添加到列表中,而不是調用getter
方法然后調用add
。(這不是一個干凈的代碼方法)
public class MLD {
private ArrayList<Entity> entityList;
public ArrayList<Entity> getEntityList() {
return entityList;
}
public void addEntity(Entity entity) {
if(entityList == null) {
// list would be initialized only when required.
// This would help reduce unwanted memory usage.
entityList = new ArrayList<>();
}
entityList.add(entity);
}
}
注意:我不確定您為什么創建了MLDManaging
class。 但如果只是在MLD
object 的列表中添加一個實體,那么我建議將MLDManaging
class 刪除。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.