¿Es necesaria la comprobación de null antes de instanceof en Java?
¡Hola a todos! Soy un desarrollador Java principiante y tengo una pregunta sobre el operador instanceof. En el código veo a menudo esta construcción:
```java
if (obj != null && obj instanceof String) {
// hacemos algo
}
```
Me confunde esta doble comprobación. Si obj es null, instanceof igualmente devolverá false, porque null no es una instancia de ninguna clase. ¿Significa esto que la comprobación de null es redundante? ¿O hay trampas?
Intenté escribir una prueba simple:
```java
Object obj = null;
System.out.println(obj instanceof String); // imprime false
```
Efectivamente, sin la comprobación de null el código funciona y no lanza NullPointerException. Pero entonces, ¿por qué muchos desarrolladores siguen escribiendo `obj != null && obj instanceof ...`? ¿Es solo un hábito o hay una necesidad real? ¿Quizás está relacionado con versiones antiguas de Java o con la concurrencia?
Explíquenme, por favor, si es necesario comprobar null antes de instanceof, y si es así, en qué casos.