Como resolver ClassCastException em Java?

Como Resolver Classcastexception Em Java



Em Java, o “ ClassCastException ” ajuda a identificar problemas de compatibilidade de tipo em tempo de execução, permitindo que os desenvolvedores os identifiquem no início da fase de desenvolvimento. Também garante a segurança de tipos, evitando inconsistências no programa. A ClassCastException ajuda muito no processo de depuração, teste, conversão correta de tipo, etc.

Este guia demonstra o procedimento para resolver ClassCastException em Java.







Como ClassCastException surge em Java?

O ' ClassCastException ” garante a conversão de tipo adequada e evita erros de tempo de execução causados ​​por conversões de tipo incompatível. Em termos simples, essa exceção é lançada quando há uma tentativa de conversão de um objeto para um tipo incompatível.



Por exemplo, visite o código abaixo sobre o “ ClassCastException ” em Java:



importar java.io.* ;
importar java.lang.* ;
importar java.util.* ;

aula LinuxDica {
//Criação da classe do driver
público estático vazio principal ( Corda [ ] argumentos )
{
tentar {
Objeto pai = novo Objeto ( ) ;

Corda criança = ( Corda ) pai ;
Sistema . fora . println ( criança ) ;
}
pegar ( Exceção f ) {
Sistema . fora . println ( f ) ;
}
}
}

Explicação do código acima:





  • No ' tentar ” bloco, a instância de um objeto “ pai ” é declarado utilizando o “ novo ” palavra-chave.
  • Em seguida, utiliza-se o typecasting, no qual o “ objeto ” está sendo typecast e tem o nome de “ criança ”.
  • Este typecast está violando a regra de que a classe pai não deve ser typecast para sua classe filha. É por isso que a exceção surge porque o “ objeto ” é uma classe pai.
  • No final, o “ pegar ” bloco é usado que leva “ Exceção ” como parâmetro e imprime uma mensagem no console.

Após o término da fase de execução:



O instantâneo acima mostra a ocorrência de ClassCastException em Java.

Como resolver ClassCastException em Java?

Três soluções possíveis são usadas que o desenvolvedor pode resolver facilmente ou evitar a chance de aumentar o “ ClassCastException ” em Java.

Essas soluções são descritas abaixo separadamente:

Solução 1: Uso do Operador “instanceof”

O ' instancia de ” operador verifica se o “ objeto ” é uma instância do tipo desejado ou não. Essa verificação ajuda a prevenir a ocorrência de “ ClassCastException ”. Por exemplo, visite o bloco de código abaixo:

público aula TypeCheckingLinuxHint {
público estático vazio principal ( Corda [ ] argumentos ) {

Objeto pai = 'Família LinuxHint' ;
se ( pai instancia de Corda ) {
Corda criança = ( Corda ) pai ;
Sistema . fora . println ( 'Depois de typecasting String: ' + criança ) ;
} outro {
Sistema . fora . println ( 'O objeto é uma instância do tipo String desejado.' ) ;
}
}
}

Explicação do código acima:

  • Primeiro, o “ pai ” objeto é criado que é inicializado com um valor fictício dentro do “ tentar ' bloquear.
  • Então, use o 'se' declaração em que o “ instancia de ” é usado para verificar a instância do “ pai ” objeto com desejado “ Corda ' tipo.
  • Em seguida, se a condição retornar “ verdadeiro ” o typecasting é executado e exibido no console.
  • Caso contrário, a mensagem de erro personalizada será exibida no console.

Após o término da fase de execução:

O instantâneo mostra que o typecasting foi feito com sucesso e ClassCastException é resolvido usando o “ instancia de ” operador.

Solução 2: Revise e corrija a operação de Typecasting

Outra solução é verificar o código várias vezes e revisar os tipos compatíveis para typecasting. Por exemplo, visite o código abaixo em que o “ ClassCastException ” é preso devido a um tipo desejado incompatível para typecasting:

público aula TypeCheckLinuxHint {
público estático vazio principal ( Corda [ ] argumentos ) {
Objeto pai = 'Família LinuxHint' ;
inteiro número convertido = ( inteiro ) pai ;
Sistema . fora . println ( 'Número após Typecasting: ' + número convertido ) ;
}
}

No código acima, o programador lançou incorretamente o “ Corda ' para ' inteiro ”.

Após o final da fase de compilação:

O instantâneo acima mostra a ocorrência de ClassCastException.

Solução 3: Uso de Genéricos

Os programadores podem usar “ genéricos ” para especificar os tipos esperados e reforçar a segurança de tipo no momento da compilação.

Por exemplo, visite o código abaixo:

importar java.util.ArrayList ;
importar java.util.List ;

público aula usandoGenéricos {
público estático vazio principal ( Corda [ ] argumentos ) {
Lista < Corda > empName = novo ArrayList <> ( ) ;
empName. adicionar ( 'Atormentar' ) ;
empName. adicionar ( 'Oleiro' ) ;

Corda Inicial = empName. pegar ( 0 ) ;
Corda Final = empName. pegar ( 1 ) ;

Sistema . fora . println ( 'Primeiro nome: ' + Inicial ) ;
Sistema . fora . println ( 'Segundo nome: ' + Final ) ;
}
}

Explicação do código acima:

  • Primeiro, os utilitários necessários são importados para o arquivo Java e uma classe de “ usandoGenéricos ” é declarado.
  • A seguir, o “ ArrayList ” do tipo “ Corda ” é declarado com o nome “ empName ” e inicializado fornecendo dois elementos de dados fictícios.
  • Em seguida, crie duas variáveis ​​do tipo String chamadas “ Inicial ' e ' Final ”. Depois disso, atribua valores acessando os números do índice.
  • No final, exiba ambas as variáveis ​​para ver o resultado.

Após o final da execução, a saída fica assim:

O instantâneo acima ilustra que o typecasting foi executado usando genéricos.

Conclusão

Para resolver o “ ClassCastException ” em Java, o programador deve garantir a compatibilidade de tipo adequada, uso de “ genéricos ' e a ' instancia de ” operador. Para resolver a exceção, o programador deve revisar e corrigir a operação de conversão garantindo a compatibilidade de tipo adequada. Além disso, este “ ClassCastException ” pode ser evitado usando “ genéricos ” e com o uso de um “ instancia de ” operador. Este guia demonstrou o método para resolver o ClassCastException em Java.