Come risolvere ClassCastException in Java?

Come Risolvere Classcastexception In Java



In Java, il ' ClassCastException ” aiuta a identificare i problemi di compatibilità dei tipi in fase di esecuzione, consentendo agli sviluppatori di rilevarli all'inizio della fase di sviluppo. Garantisce inoltre l'indipendenza dai tipi, prevenendo incoerenze nel programma. L'eccezione ClassCastException aiuta molto nel processo di debug, test, casting di tipo corretto, ecc.

Questa guida illustra la procedura per risolvere ClassCastException in Java.







Come nascono ClassCastException in Java?

IL ' ClassCastException ” assicura un casting di tipo corretto e previene gli errori di runtime causati da conversioni di tipo incompatibili. In termini semplici, questa eccezione viene generata quando si tenta di eseguire il cast di un oggetto su un tipo incompatibile.



Ad esempio, visita il codice seguente relativo a ' ClassCastException ” in Java:



importare java.io.* ;
importare java.lingua* ;
importare java.util.* ;

classe Linux Suggerimento {
//Creazione della classe del driver
pubblico statico vuoto principale ( Corda [ ] arg )
{
Tentativo {
Oggetto genitore = nuovo Oggetto ( ) ;

Corda bambino = ( Corda ) genitore ;
Sistema . fuori . println ( bambino ) ;
}
presa ( Eccezione F ) {
Sistema . fuori . println ( F ) ;
}
}
}

Spiegazione del codice precedente:





  • Nel ' Tentativo ” blocco, l'istanza di un oggetto “ genitore ” viene dichiarato utilizzando il “ nuovo ' parola chiave.
  • Successivamente, viene utilizzato il typecasting in cui il ' oggetto ' il tipo è in fase di typecast e ha il nome di ' bambino ”.
  • Questo typecasting sta violando la regola secondo cui la classe genitore non deve essere typecasting alla sua classe figlia. Questo è il motivo per cui l'eccezione si pone perché il ' oggetto ” type è una classe genitore.
  • Alla fine il “ presa ” viene utilizzato un blocco che richiede “ Eccezione ” come parametro e stampa un messaggio sulla console.

Al termine della fase esecutiva:



L'istantanea sopra mostra l'occorrenza di ClassCastException in Java.

Come risolvere ClassCastException in Java?

Vengono utilizzate tre possibili soluzioni che lo sviluppatore può facilmente risolvere o evitare la possibilità di alzare il ' ClassCastException ' in Giava.

Queste soluzioni sono descritte di seguito separatamente:

Soluzione 1: utilizzo dell'operatore 'instanceof'.

IL ' istanza di ” l'operatore verifica se il “ oggetto ” è un'istanza del tipo desiderato o meno. Questa verifica aiuta a prevenire il verificarsi di ' ClassCastException ”. Ad esempio, visita il seguente blocco di codice:

pubblico classe TypeCheckingLinuxHint {
pubblico statico vuoto principale ( Corda [ ] arg ) {

Oggetto genitore = 'Famiglia LinuxHint' ;
Se ( genitore istanza di Corda ) {
Corda bambino = ( Corda ) genitore ;
Sistema . fuori . println ( 'Dopo aver digitato String: ' + bambino ) ;
} altro {
Sistema . fuori . println ( 'L'oggetto è un'istanza del tipo desiderato String.' ) ;
}
}
}

Spiegazione del codice precedente:

  • Prima il ' genitore ” viene creato un oggetto che viene inizializzato con un valore fittizio all'interno del “ Tentativo ” blocco.
  • Quindi, usa il 'Se' dichiarazione in cui “ istanza di L'operatore ” viene utilizzato per verificare l'istanza dell'operatore “ genitore ” oggetto con desiderato “ Corda ' tipo.
  • Successivamente, se la condizione restituisce ' VERO ” il typecasting viene eseguito e visualizzato sulla console.
  • Altrimenti, il messaggio di errore personalizzato viene visualizzato sulla console.

Al termine della fase esecutiva:

L'istantanea mostra che il typecasting è stato eseguito correttamente e ClassCastException viene risolto utilizzando il ' istanza di ” operatore.

Soluzione 2: rivedere e correggere l'operazione di typecasting

Un'altra soluzione è controllare il codice più volte e rivedere i tipi compatibili per il typecasting. Ad esempio, visita il codice seguente in cui ' ClassCastException ' viene arrestato a causa di un tipo desiderato incompatibile per il typecasting:

pubblico classe TypeCheckLinuxHint {
pubblico statico vuoto principale ( Corda [ ] arg ) {
Oggetto genitore = 'Famiglia LinuxHint' ;
Numero intero convertitoNumero = ( Numero intero ) genitore ;
Sistema . fuori . println ( 'Numero dopo il typecasting: ' + convertitoNumero ) ;
}
}

Nel codice sopra, il programmatore ha lanciato erroneamente il ' Corda ' A ' Numero intero ”.

Al termine della fase di compilazione:

L'istantanea sopra mostra l'occorrenza di ClassCastException.

Soluzione 3: utilizzo di generici

I programmatori possono usare ' generici ” per specificare i tipi previsti e applicare l'indipendenza dai tipi in fase di compilazione.

Ad esempio, visita il codice seguente:

importare java.util.ArrayList ;
importare java.util.List ;

pubblico classe usingGenerics {
pubblico statico vuoto principale ( Corda [ ] arg ) {
Elenco < Corda > empName = nuovo Lista di array <> ( ) ;
empName. aggiungere ( 'Harry' ) ;
empName. aggiungere ( 'Vasaio' ) ;

Corda Iniziale = empName. Ottenere ( 0 ) ;
Corda Finale = empName. Ottenere ( 1 ) ;

Sistema . fuori . println ( 'Nome di battesimo: ' + Iniziale ) ;
Sistema . fuori . println ( 'Secondo nome: ' + Finale ) ;
}
}

Spiegazione del codice precedente:

  • Innanzitutto, le utilità richieste vengono importate nel file Java e una classe di ' usingGenerics ” è dichiarato.
  • Successivamente, il “ Lista di array “di tipo” Corda ” si dichiara con il nome “ empName ” e inizializzato fornendo due elementi di dati fittizi.
  • Quindi, crea due variabili di tipo stringa denominate ' Iniziale ' E ' Finale ”. Successivamente, assegna i valori accedendo ai numeri di indice.
  • Alla fine, visualizza entrambe le variabili per vedere il risultato.

Dopo la fine dell'esecuzione, l'output è simile al seguente:

L'istantanea sopra illustra che il typecasting è stato eseguito utilizzando i generici.

Conclusione

Per risolvere il “ ClassCastException ” in Java, il programmatore deve garantire la corretta compatibilità dei tipi, l'uso di “ generici ' e il ' istanza di ” operatore. Per risolvere l'eccezione, il programmatore deve rivedere e correggere l'operazione di casting assicurando la corretta compatibilità dei tipi. Inoltre, questo “ ClassCastException ” può essere evitato usando “ generici ” e con l'uso di un “ istanza di ” operatore. Questa guida ha dimostrato il metodo per risolvere ClassCastException in Java.