I am passing a Boolean
value to a method that has a boolean
parameter.
When my value is null
what happens? Will it assign a default value, like false
to the argument in a method or will it cause any problems?
When you call a method that wants a boolean
but give it a Boolean
, Java has to unbox the value. This happens automatically and implicitly.
Therefore, during compilation, Java replaces your call
foo(value);
by
foo(value.booleanValue());
This process is explained in detail in JLS, chapter 5.1.8. Unboxing Conversion:
At run time, unboxing conversion proceeds as follows:
- If
r
is a reference of typeBoolean
, then unboxing conversion convertsr
intor.booleanValue()
null
Now, when value
is null
, this statement obviously leads to a NullPointerException
at runtime, since you are trying to call a method (booleanValue
) on a variable that does not refer to any instance.
So your code crashes, it will not use any default value as fallback. Java was designed with fail-fast in mind.
false
insteadIn case you want the method to receive false
as fallback value, you have to code this explicitly yourself. For example by:
foo(value == null ? false : value);