A palavra-chave instanceof
em Java é usada para verificar se um objeto é uma instância de uma classe específica ou implementa uma interface. Ela retorna um valor booleano (true
ou false
), dependendo se o objeto é do tipo especificado ou não.
Sintaxe de instanceof
objeto instanceof Tipo
objeto
: A referência do objeto a ser verificado.Tipo
: A classe ou interface a ser comparada.
Se o objeto for uma instância da classe especificada ou implementa a interface, a expressão retorna true
. Caso contrário, retorna false
.
Exemplo de Uso de instanceof
class Animal { }
class Cachorro extends Animal { }
public class Main {
public static void main(String[] args) {
Animal a = new Cachorro();
// Verificando se 'a' é uma instância de Cachorro
if (a instanceof Cachorro) {
System.out.println("a é uma instância de Cachorro");
} else {
System.out.println("a não é uma instância de Cachorro");
}
// Verificando se 'a' é uma instância de Animal
if (a instanceof Animal) {
System.out.println("a é uma instância de Animal");
}
}
}
Posts recentes
Saída:
a é uma instância de Cachorro
a é uma instância de Animal
No exemplo acima:
a instanceof Cachorro
retornatrue
porquea
foi instanciado como um objeto da classeCachorro
.a instanceof Animal
também retornatrue
, porqueCachorro
herda deAnimal
.
Usos Comuns
Verificação de Tipos em Herança e Polimorfismo: instanceof
é frequentemente usado ao trabalhar com polimorfismo, para verificar o tipo real de um objeto em tempo de execução.
Verificação de Interfaces: O operador também pode ser usado para verificar se um objeto implementa uma interface.
interface Voavel { }
class Passaro implements Voavel { }
public class Main {
public static void main(String[] args) {
Passaro p = new Passaro();
// Verificando se 'p' implementa a interface Voavel
if (p instanceof Voavel) {
System.out.println("p pode voar");
}
}
}
Saída:
p pode voar
Regras Importantes:
- Se
objeto
fornull
, a expressãoobjeto instanceof Tipo
sempre retornafalse
. instanceof
só pode ser usado com tipos de referência (classes e interfaces), não com tipos primitivos.
Exemplo com null
:
Animal a = null;
if (a instanceof Animal) {
System.out.println("a é uma instância de Animal");
} else {
System.out.println("a não é uma instância de Animal");
}
Saída:
a não é uma instância de Animal
Resumo:
instanceof
verifica se um objeto é de um tipo específico ou implementa uma interface.- Retorna
true
se o objeto for uma instância do tipo especificado, caso contrário, retornafalse
. - É muito útil para verificações de tipo em hierarquias de classes e interfaces.