簡體   English   中英

從另一個 class 將對象添加到 ArrayList

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM