Вот простой фрагмент кода, и я не могу понять, почему он выбрасывает NullPointerException
.
String lastGroup = "";
menuTevekenysegekGrouped = new ArrayList<MenuElem>();
for(MenuElem me : menuA) {
// double checked that me objects are never null
// double checked that menuA is never null
if(me.getGroup() != null && !me.getGroup().equals(lastGroup)) { /* NPE!!! */
lastGroup = me.getGroup();
MenuElem separ = new MenuElem();
separ.setCaption(lastGroup);
separ.setGroupHead(true);
menuTevekenysegekGrouped.add(separ);
menuTevekenysegekGrouped.add(me);
} else {
menuTevekenysegekGrouped.add(me);
}
}
В первой итерации me.getGroup()
возвращает null
. Таким образом, первый операнд &&
является ложным, а второй операнд не должен оцениваться в соответствии с JLS, насколько я знаю. Однако, когда я отлаживаю код, я получаю NPE из отмеченной строки. Я хотел бы знать почему. (Использование JRockit 1.6.0_05, если это имеет значение ..)