java - 在对象中填充 HashMap 时出现 NPE?

标签 java object nullpointerexception null hashmap

我有以下对象:

public class PersonDTO {

    private Map<String, String> idsAndNames;

    //default constructor
    public PersonDTO() {
    }

    public PersonDTO(Map<String, String> idsAndNames) {
        this.idsAndNames = idsAndNames;
    }

    public void setIdsAndNames(Map<String, String> idsAndNames) {
        this.idsAndNames = idsAndNames;
    }

    public Map<String, String> getIdsAndNames() {
        return idsAndNames;
    }


    public void addEntryToMap(String id, String name) {
        this.idsAndNames.put(id, name);
    }

}

每当我尝试填充对象内的map(请参阅下面的方法)时,我都会收到一个空指针异常,说明Mapnull。我该如何解决这个问题?

填充对象的方法(在主类内):

public PersonDTO populatePersonDTO(List<String> ids, List<String> names){

        Map<String, String> idsAndNames = new HashMap<>();
        PersonDTO personDTO = new PersonDTO();
        personDTO.setIdsAndNames(idsAndNames);

        for(int i=0;i<ids.size();i++){

            personDTO.addEntryToMap(ids.get(i),names.get(i)); //line throwing NPE
        }
        return personDTO;
    }

调用 populatePersonDTO:

List<String> ids= Arrays.asList("1", "2", "3");
List<String> names= Arrays.asList("name1", "name2", "name3");

populatePersonDTO(ids, names);

最佳答案

如果 NPE 行指向 populatePersonDTO,则 names 为空(ids 不能为空,因为我们正在调用ids.size() 没有问题)。如果是 idsAndNames,NPE 将指向 addEntryToMap

因此请确保 names 不为空。

关于java - 在对象中填充 HashMap 时出现 NPE?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40260309/

相关文章:

java - 将位图从 Java 类返回到 Activity

java - 在同一 StringBuilder 实例上调用 toString 时的不同输出

java - 在类 NullPointerException 中实例化一个类

java - 无法在 Java 中复制 "My Documents"

javascript - 在 Javascript 中引用对象

java - 空指针异常 jnlp.FileSaveService

java - 为什么 split() 在设置 limit -1 之后产生额外的 ,

java - [] 如何改变 Java 正则表达式?

javascript - 在 JavaScript 中创建 deepEqual 函数

android - Kotlin Android 惰性类初始化在杀死 App 后仍然存在