Is null check needed before calling instanceof?

java, null, nullpointerexception

Solution

No, a null check is not needed before using `instanceof`.

The expression `x instanceof SomeClass` is `false` if `x` is `null`.

The Java 11 Language Specification expresses this concisely in section 15.20.2, "Type comparison operator instanceof". (Java 17 expresses this less concisely, after the introduction of `instanceof` pattern matching.)

"At run time, the result of the `instanceof` operator is `true` if the value of the RelationalExpression is not `null` and the reference could be cast to the ReferenceType without raising a `ClassCastException`. Otherwise the result is `false`."

So if the operand is null, the result is false.

Problem

Will `null instanceof SomeClass` return `false` or throw a `NullPointerException`?

Original source