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.