Operador instanceof em Java
Este post mostra o que é e como utilizar o operador instanceof em Java, além de mostrar exemplos para melhorar o seu entendimento
Última atualização em: | 22202 Visualizações
Operador instanceof
no Java
O instanceof
é um operador que permite testar se um objeto é uma instância de um tipo específico de uma class, subclass ou interface.
O instanceof
em java também é conhecida como operador de comparação de tipos, isso porque compara a instância com o tipo.
Integer code = 1;
System.out.println(String.format("Value is an integer instance? %s", code instanceof Integer));
A saída será: Value is an integer instance? true
E seu retorno é true
(caso a instância seja do tipo comparado) ou false
.
Exemplo simples do uso de instanceof
Este exemplo mostra como determinar se um objeto é uma instância de
class InstanceofSample {
public static void main(String args[]) {
InstanceofSample s = new InstanceofSample();
System.out.println(s instanceof InstanceofSample);
}
}
A saída será true
.
Usando instanceof em subclasses
Um objeto do tipo subclasse também é um tipo de classe pai. Por exemplo, se a classe Cat
estender Animal
, o objeto Cat
poderá ser referido pela classe Cat
ou Animal
.
Veja o exemplo:
public class Animal {
public static void main(String[] args) {
Cat cat = new Cat();
System.out.println(cat instanceof Animal);
System.out.println(cat instanceof Cat);
}
}
class Cat extends Animal {
}
A saída será:
true
true
instanceof
com uma variável que tem valor null
Se aplicarmos o operador instanceof
com uma variável que possui valor null
, ele retornará false
.
System.out.println(null instanceof Integer);
A saída será: false
Note que caso a instância tenha valor
null
o retorno será sempre false.
Usando como base o mesmo exemplo anterior temos:
public class Animal {
public static void main(String[] args) {
Cat cat = null;
System.out.println(cat instanceof Animal);
System.out.println(cat instanceof Cat);
}
}
class Cat extends Animal {
}
A saída será:
false
false
Note que não teremos problema de
NullPointerException
usando o operadorinstanceof
.
Não esqueca de deixar suas dúvidas nos comentários e compartilhar este post.