将对象从另一个类添加到 ArrayList

时间:2021-02-14 09:53:16

标签: java arraylist nullpointerexception

大家好,我正在尝试从另一个类向 ArrayList 添加对象,但我有一个 java.lang.NullPointerException。这是我的代码。

sudo apt install mono-devel
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);
    }
}

提前致谢

2 个答案:

答案 0 :(得分:2)

您需要在构造函数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;
    }
    
}

答案 1 :(得分:0)

您尚未初始化 MLD 类中的列表。

更好的方法是创建一个单独的方法来添加到列表中,而不是调用 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 类。但如果只是将实体添加到MLD 对象的列表中,那么我建议删除MLDManaging 类。

相关问题