This code is causing a null pointer exception. I have no idea why:
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);
}
}
}
I've examined it in the debugger, and all the local variables are non-null. How else could this be happening? The BiMap is from Google Collections.
The null pointer exception is a result of unboxing the result of inverse.get(animal)
. If inverse
doesn't contain the key animal
, it returns null
, "of type" Integer
. Given that the assignment is to an int
reference, Java unboxes the value into an int
, resulting in a null pointer exception.
You should either check for inverse.containsKey(animal)
or use Integer
as the local variable type to avoid unboxing and act accordingly. The proper mechanism depends on your context.