Operador instanceof em Java: Guia Completo
Operador instanceof em Java: Guia Completo
Explore como o operador instanceof do Java funciona, com exemplos claros cobrindo uso básico, herança e interfaces.
Em Java, o operador instanceof permite verificar se um objeto pertence a uma classe ou interface específica. Retorna true se o tipo em tempo de execução do objeto corresponde ao tipo especificado, caso contrário false.
nomeObjeto instanceof nomeClasse;
Abaixo está um exemplo direto demonstrando o operador com uma String e uma classe definida pelo usuário.
Exemplo: Uso Básico do instanceof
class Main { public static void main(String[] args) { String nome = "Programiz"; boolean resultado1 = nome instanceof String; System.out.println("nome é uma instância de String: " + resultado1); Main obj = new Main(); boolean resultado2 = obj instanceof Main; System.out.println("obj é uma instância de Main: " + resultado2); } }
Saída
nome é uma instância de String: true obj é uma instância de Main: true
Ambas as verificações retornam true porque nome é de fato uma String e obj é uma instância de Main.
Nota: Em Java, String é um tipo de referência, não um primitivo.
Usando instanceof com Herança
O operador é inestimável ao trabalhar com hierarquias polimórficas. Confirma que uma instância de subclasse também satisfaz seu tipo de superclasse.
// Superclasse class Animal {} // Subclasse class Cachorro extends Animal {} class Main { public static void main(String[] args) { Cachorro c1 = new Cachorro(); System.out.println(c1 instanceof Cachorro); // true System.out.println(c1 instanceof Animal); // true } }
Como mostrado, c1 é reconhecido tanto como Cachorro quanto como Animal, refletindo o modelo de herança do Java.
Usando instanceof com Interfaces
O instanceof também verifica se um objeto implementa uma interface específica.
interface Animal { } class Cachorro implements Animal { } class Main { public static void main(String[] args) { Cachorro c1 = new Cachorro(); System.out.println(c1 instanceof Animal); // true } }
Aqui, c1 é um Cachorro que implementa Animal, então o operador retorna true.
Nota: Toda classe Java estende java.lang.Object. Portanto, qualquer objeto também é uma instância de Object. Por exemplo:
c1 instanceof Object
Isto sempre avaliará como true.
Java
- Entendendo a Palavra-chave final em Java: Variáveis, Métodos e Classes
- Dominando Herança em Java: Conceitos, Tipos e Exemplos Práticos
- Entendendo Classes Aninhadas Estáticas em Java: Uso, Diferenças e Exemplos
- Dominando Classes Internas Anônimas em Java: Definição, Sintaxe e Exemplos Práticos
- Padrão Singleton em Java Explicado: Como Implementar e Usar com Segurança
- Dominando Reflection em Java: Inspecionando Classes, Métodos e Campos em Tempo de Execução
- Dominando Java ObjectOutputStream: Serialização, Métodos e Exemplos Práticos
- Dominando Java Generics – Construindo Código Reutilizável e Type-Safe
- Dominando Operações de Arquivo em Java com java.io – Criação, Leitura, Escrita e Exclusão
- Java 9: Simplifique Classes Anônimas Internas com o Operador Diamond