Aprenda a usar o operador instanceof em Java
Ao fazer uso do operador em Java instanceof, você consegue verificar a correspondência entre um objeto e uma classe de um código. O resultado fornecido por esse tipo de operação é booleano, ou seja, os valores retornados são sempre “true” (verdadeiros) ou “false” (falsos). Realize verificações instanceof em Java para evitar a geração de mensagens de erro.
O que é instanceof em Java?
Nem todas as variáveis em Java são tão óbvias: a natureza de algumas é difícil de ser identificada de imediato. Especialmente durante o desenvolvimento de projetos extensos e com numerosas variáveis em linguagens de programação, dados de entrada podem fazer com que variáveis sejam confundidas com um ou vários objetos. Para evitar que isso ocorra, o operador Java instanceof deve ser aplicado. Ele comprova se a instância de uma variável de referência corresponde à classe, subclasse ou interface desejada. Se ela corresponder, o operador instanceof retorna o valor booleano “true”. Se não houver correspondência, contudo, o resultado apresentado será “false”.
Antes de manipular um objeto desconhecido, recomendamos que você execute uma operação instanceof em Java, para se ter certeza de que o objeto em questão pertence à classe presumida. Se essa verificação de segurança não for realizada, uma ClassCastException (exceção de tempo de execução) poderá ser lançada. Essa exceção ocorre quando se tenta converter um objeto para uma outra classe. A mensagem de erro pode causar confusão e problemas, especialmente em códigos mais longos, por isso aconselhamos a tomada desse tipo de precaução.
Rápido e escalável, confie na hospedagem da IONOS, que inclui domínio grátis no primeiro ano e endereço de e-mail!
- Domínio
- SSL Wildcard
- Suporte 24 horas
Funcionamento e sintaxe de instanceof em Java
Quando você executa uma operação instanceof em Java, o operador compara uma variável de referência com uma classe específica, também por você indicada. Ele não faz qualquer outra afirmação sobre a natureza do objeto ou da classe, apenas determina se há ou não uma correspondência. A sintaxe, bastante simples, pode ser observada abaixo:
Se (objeto)
for uma instância de (classe)
, o resultado obtido será “true”. Caso contrário, o código retornará “false”.
Exemplos de aplicação de instanceof em Java
Para explicarmos como o operador instanceof em Java age, o aplicaremos a um código de exemplo. Para começar, criamos uma classe em Java chamada “Animal”.
Depois, estendemos essa classe com a criação de uma subclasse chamada “Gato”.
Agora, vamos usar o operador Java instanceof para verificar se uma instância de “Gato“ pertence à classe “Animal”. Para fazer isso, pediremos ajuda ao comando em Java System.out.println
:
O resultado obtido pela execução deste código será:
Instanceof em múltiplos níveis e na classe Object
O operador instanceof em Java também pode ser aplicado a classes principais e a outras subclasses. Para ilustrarmos isso, elaboramos um exemplo com múltiplos níveis e expandimos o operador instanceof por meio da instrução if-else
— os textos entre duas barras (//
) dizem respeito a comentários que apenas explicam cada etapa, mas que não têm nem executam qualquer função no código.
Uma vez que, no nosso exemplo, “Gato1” é uma instância da classe “Gato” e da superclasse “Animal”, ambas as perguntas são respondidas com “true”. Como a classe “Object”, ou “java.lang.Object”, está no topo da hierarquia, “Gato1” também é considerada uma instância de “Object”. Assim, o operador instanceof em Java também retorna “true” quando aplicado à classe “Object”. Observe o resultado:
Resultado instanceof de valor nulo
Quando uma variável tiver o valor 0, ou seja, não contiver nenhum objeto, o operador instanceof em Java automaticamente retornará o resultado “false”. O exemplo abaixo ilustra a situação:
O resultado desde código é o seguinte:
Superclasses não são instâncias de subclasses
Embora, na hierarquia, objetos de subclasses também pertençam às respectivas superclasses, o princípio não é inversamente proporcional. O próximo exemplo comprova a afirmação:
O resultado, neste caso, corresponde a:
Mensagens de erro por falta de correspondência
Quando não existir uma correspondência entre o objeto e a classe em comparação, uma mensagem de erro será exibida — tal ocorrência poderá ser observada no nosso próximo código de exemplo. Nele, criamos uma nova classe chamada “Cachorro”, que pertence à superclasse “Animal”. “Cachorro”, contudo, não possui qualquer relação com a classe “Gato”.
Como você pode observar, ao executarmos o código, recebemos uma mensagem de erro nos informando que não há nenhuma correspondência entre as classes “Gato” e “Cachorro”:
Nosso Digital Guide tem muitos outros tutoriais sobre Java. Descubra, por exemplo, o que diferencia Java e JavaScript, e Java e Python. Se também for do seu interesse, explore as possibilidades dos operadores Java bitwise.