有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

不应该使用ArrayList实现java NullPointerException?

今天我得到了一个NullPointerException,它实际上不可能发生

Exception in thread "Timer-9" java.lang.NullPointerException
    at packagename.censored.Bot.changeServergroups(Bot.java:1363)
    at packagename.censored.Bot.xpTask(Bot.java:1239)
    at packagename.censored.Bot.access$7(Bot.java:1187)
    at packagename.censored.Bot$9.run(Bot.java:729)
    at java.util.TimerThread.mainLoop(Timer.java:555)
    at java.util.TimerThread.run(Timer.java:505)

这是守则的相关部分:

public void changeServergroups(int cldbid, ArrayList<Integer> addList, ArrayList<Integer> removeList) {
    // If there are groups to add AND delete, remove them from the lists
    if (addList != null && removeList != null) {
        ArrayList<Integer> temp = new ArrayList<Integer>(addList);
        for (int s : temp) { // THIS IS LINE 1363
            if (removeList.contains(s)) {
                addList.remove((Integer) s);
                removeList.remove((Integer) s);
            }
        }
    }
    // some more code, to do the actual group changes
}

如何在那里获取NullPointerException?在从中创建新的临时ArrayList之前,我检查以确保addList不为null。有人能告诉我这怎么可能以NullPointerException返回吗


共 (1) 个答案

  1. # 1 楼答案

    唯一的可能性是您的列表temp包含null。空的Integer然后被解除绑定到一个int并抛出一个NPE

    如果可以接受空值,则可以使用for (Integer s : temp)解决NPE