El instanceofoperador java se utiliza para probar si el objeto es una instancia del tipo especificado (clase, subclase o interfaz).
La instancia de java también se conoce como tipo, comparison operatorya que compara la instancia con el tipo. Devuelve ya sea trueo false. Si aplicamos el instanceofoperador con cualquier variable que tenga nullvalor, devuelve false.
Desde JDK 14+ que incluye JEP 305 también podemos hacer "Pattern Matching" parainstanceof
Los patrones básicamente prueban que un valor tiene un cierto tipo y pueden extraer información del valor cuando tiene el tipo correspondiente. La coincidencia de patrones permite una expresión más clara y eficiente de la lógica común en un sistema, es decir, la eliminación condicional de componentes de los objetos.
Antes de Java 14
if (obj instanceof String) {
String str = (String) obj; // need to declare and cast again the object
.. str.contains(..) ..
}else{
str = ....
}
Mejoras de Java 14
if (!(obj instanceof String str)) {
.. str.contains(..) .. // no need to declare str object again with casting
} else {
.. str....
}
También podemos combinar la verificación de tipo y otras condiciones juntas
if (obj instanceof String str && str.length() > 4) {.. str.contains(..) ..}
El uso de la coincidencia de patrones instanceofdebería reducir el número total de conversiones explícitas en los programas Java.
PD : instanceOfsolo coincidirá cuando el objeto no sea nulo, luego solo se le puede asignar str.