O instanceof
operador java é usado para testar se o objeto é uma instância do tipo especificado (classe ou subclasse ou interface).
A instanceof em java também é conhecida como tipo comparison operator
, pois compara a instância com o tipo. Retorna true
ou false
. Se aplicarmos o instanceof
operador com qualquer variável que tenha null
valor, ela retornará false
.
Do JDK 14+, que inclui o JEP 305 , também podemos fazer "Correspondência de Padrões" parainstanceof
Os padrões testam basicamente que um valor tem um determinado tipo e podem extrair informações do valor quando ele possui o tipo correspondente. A correspondência de padrões permite uma expressão mais clara e eficiente da lógica comum em um sistema, ou seja, a remoção condicional de componentes dos objetos.
Antes do Java 14
if (obj instanceof String) {
String str = (String) obj; // need to declare and cast again the object
.. str.contains(..) ..
}else{
str = ....
}
Aprimoramentos do Java 14
if (!(obj instanceof String str)) {
.. str.contains(..) .. // no need to declare str object again with casting
} else {
.. str....
}
Também podemos combinar a verificação de tipo e outras condições
if (obj instanceof String str && str.length() > 4) {.. str.contains(..) ..}
O uso da correspondência de padrões em instanceof
deve reduzir o número geral de transmissões explícitas nos programas Java.
PS : instanceOf
corresponderá apenas quando o objeto não for nulo, e somente poderá ser atribuído a ele str
.