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

Add objects to an ArrayList from another class

提问人: 提问时间:2/14/2021 更新时间:2/14/2021 访问量:276

问:

大家好,我正在尝试将对象从另一个类添加到 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);

先谢谢你

java arraylist nullpointerexception

评论


答:

2赞 SSK 2/14/2021 #1

您需要在构造函数中初始化列表,如下所示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;
    }
    
}
0赞 Gautham M 2/14/2021 #2

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

更好的方法是创建一个单独的方法添加到列表中,而不是调用该方法然后调用 .(这不是一种干净的代码方法)getteradd

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

注意:我不确定您为什么要创建该类。但是,如果只是将一个实体添加到对象列表中,那么我建议删除该类。MLDManagingMLDMLDManaging