Java:如何修复此 NPE?

标签 java arraylist nullpointerexception

所以我正在使用集合设计模式并使用数组列表。每当我尝试向数组列表中添加某些内容时,我都会收到 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/

相关文章:

java - 如何摆脱 InvalidClassException SerialVersionUID?

java - RxJava是多线程的吗?

java - 如何从 HashMap 列表中获取值?

java - 拆分数组列表并再次将它们合并回来

java - 处理相机调用并预览时出现 javaNullPointer 异常

java - 如何使用Spring在Helper类中获取 Autowiring 的bean

java - Java中的字符串替换和输出

java - 在 Java 中编辑字符串 boolean 值和整数的 ArrayList

java - JSP 不抛出 NullPointerException

java - 在 Java Swing 库中使用带有面板的图形的问题