Avatar ·

Precisa de verificação de null antes de instanceof em Java?

Olá, colegas! Sou um desenvolvedor Java iniciante e me deparei com uma questão que me incomoda. Digamos que eu tenha uma variável que pode ser null e quero verificar seu tipo com instanceof. Preciso verificar explicitamente se a variável não é null antes disso? \n\nAqui está um exemplo de código que costumo escrever:\n\n```java\nObject obj = getSomeObject(); // pode retornar null\nif (obj != null) {\n if (obj instanceof String) {\n String str = (String) obj;\n System.out.println(str.length());\n }\n}\n```\n\nMas recentemente me disseram que instanceof é seguro por si só e retorna false para null. Ou seja, posso escrever assim:\n\n```java\nif (obj instanceof String) {\n String str = (String) obj;\n System.out.println(str.length());\n}\n```\n\nTentei — realmente, não ocorre exceção NullPointerException. Mas ainda tenho dúvidas: será que isso funciona apenas em casos específicos? Talvez haja armadilhas? Por exemplo, se obj for null, então instanc