这是一个简单的代码片段,我不知道为什么它会抛出一个NullPointerException
。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 ..)
如果您向我们展示堆栈跟踪将会很有帮助。 – someguy
您可以标记NPE被抛出的行(在堆栈轨迹中可见)。 – Lutz
好的,你是否都问过。 – jabal