Java:拆箱Integer时出现空指针异常?
此代码导致空指针异常。我不知道为什么:
private void setSiblings(PhylogenyTree node, Color color) throws InvalidCellNumberException { PhylogenyTree parent = node.getParent();
for (PhylogenyTree sibling : parent.getChildren()) {
if (! sibling.equals(node)) {
Animal animal = sibling.getAnimal();
BiMap<PhylogenyTree, Integer> inverse = cellInfo.inverse();
int cell = inverse.get(animal); // null pointer exception here
setCellColor(cell, color);
}
}
}
我已经在调试器中检查了它,所有局部变量都不为空。怎么会这样呢?BiMap来自Google Collections。
回答:
空指针异常是将的结果拆箱的结果inverse.get(animal)
。如果inverse
不包含键animal
,则返回null
“ of
type” Integer
。假设分配是给int
引用的,Java将值拆箱到中int
,导致空指针异常。
您应该检查inverse.containsKey(animal)
或Integer
用作局部变量类型,以免取消装箱并采取相应措施。适当的机制取决于您的上下文。
以上是 Java:拆箱Integer时出现空指针异常? 的全部内容, 来源链接: utcz.com/qa/433208.html