gpt4 book ai didi

Java:如何修复此 NPE?

转载 作者:行者123 更新时间:2023-12-02 06:34:40 28 4
gpt4 key购买 nike

所以我正在使用集合设计模式并使用数组列表。每当我尝试向数组列表中添加某些内容时,我都会收到 NPE。我可能错误地实现了该集合,因此出现了 NPE。

我不想复制我的整个代码,因为它太长了,所以我试图给你们所有人一个 SSCCE。我认为 ObjectA.java 和 Objects.java 的内容不是必需的,因为在实现集合模式之前我没有得到任何 NPE。特别注意:我无法导入Java的迭代器。

//Game.java
public class Game {
private World w;

public Game() {
w = new World();
w.getList().add(new ObjectA()); //NPE here
}
}

//World.java
public class World {
private Collection list;

public Collection getList() {
return list;
}
}

//Collection.java //I don't know what could cause the NPE so I show everything
public class Collection{
private ArrayList<Objects> collection = new ArrayList<>(0);

public Objects get(int i) {
return collection.get(i);
}
public Objects remove(int i){
return collection.get(i);
}
public int size() {
return collection.size();
}
public void add(Objects o) {
collection.add(o);
}
public Iterator getIterator() {
return new CollectionIterator();
}

public class CollectionIterator {
private int index;

public CollectionIterator() {
index--;
}
public boolean hasNext() {
if (collection.size() <= 0 || currElementIndex == collection.size() - 1) return false;
return true;
}
public Object getNext() {
index++;
return collection.get(index);
}
public void remove() {
collection.remove(index);
index--;
}
}
}

最佳答案

因为World类中的列表尚未初始化。

private Collection list; // Not yet initialized

因此,w.getList() 返回一个未初始化的列表,当您对其调用 add() 时,该列表会抛出 NPE。

您需要在使用列表之前对其进行初始化。

private Collection list =  new ArrayList();

关于Java:如何修复此 NPE?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19782382/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com