Сегодня я получил исключение NullPointerException в точке, где это на самом деле не может произойти.NullPointerException с ArrayList - не должно быть возможным?
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 там? Я проверяю, чтобы addList
не был нулевым, прежде чем создавать из него новый временный ArrayList. Может ли кто-нибудь сказать мне, как это может вернуться в NullPointerException?
Спасибо за эту идею. Я проверю, возможно ли, что 'addList' будет содержать null в этой точке. – pimeys
не должен распаковывать NULL для NULL? – SacJn
Это, оказывается, правильный ответ. Из-за ошибки в другом методе 'addList' здесь содержал null, в результате чего был описан NPE. Благодаря! – pimeys