On my last code review session I stumbled over that lovely piece of code:
Boolean wrapper = foo();
boolean primitive = Boolean.parseBoolean(""+wrapper);
A somehow interesting way of converting a Boolean to it’s primitive.
I guess this was done to avoid a NullPointerException in case wrapper is null. But it violates one simple rule: write readable code.
Of course, this line isn’t hard to understand—but do you know for sure the outcome of the parseBoolean-method when the argument is null or an empty String? Is it ‘false’, ‘true’ or will the method throw an exception? To make it even worse: “”+wrapper will return the String “null” (yep – a String of length 4) when wrapper is null. Can parseBoolean handle this too?
So how to (really) avoid a NullPointer here? Simply use:
Boolean wrapper = foo();
boolean primitive = wrapper == null ? false : wrapper.booleanValue();
or (cooler but a little less readable):
Boolean wrapper = foo();
boolean primitive = wrapper != null && wrapper.booleanValue();