Cum se rezolvă ClassCastException în Java?

Cum Se Rezolva Classcastexception In Java



În Java, „ ClassCastException ” ajută la identificarea problemelor de compatibilitate de tip în timpul execuției, permițând dezvoltatorilor să le detecteze la începutul fazei de dezvoltare. De asemenea, asigură siguranța tipului, prevenind inconsecvențele în program. ClassCastException ajută foarte mult în procesul de depanare, testare, turnare corectă a tipului etc.

Acest ghid demonstrează procedura de rezolvare a ClassCastException în Java.







Cum apare ClassCastException în Java?

ClassCastException ” asigură turnarea corectă a tipului și previne erorile de rulare cauzate de conversiile de tip incompatibile. În termeni simpli, această excepție este aruncată atunci când un obiect este încercat să fie turnat la un tip incompatibil.



De exemplu, vizitați codul de mai jos despre „ ClassCastException ” în Java:



import java.io.* ;
import java.lang.* ;
import java.util.* ;

clasă LinuxHint {
//Crearea clasei de șoferi
public static gol principal ( Şir [ ] argumente )
{
încerca {
Obiect mamă = nou Obiect ( ) ;

Şir copil = ( Şir ) mamă ;
Sistem . afară . println ( copil ) ;
}
captură ( Excepție f ) {
Sistem . afară . println ( f ) ;
}
}
}

Explicația codului de mai sus:





  • În ' încerca „bloc, instanța unui obiect” mamă ” este declarat prin utilizarea „ nou ” cuvânt cheie.
  • După aceea, tiparea este utilizată în care „ obiect tipul este în curs de tipărire și are numele de „ copil ”.
  • Această tipărire încalcă regula conform căreia clasa părinte nu trebuie să fie tipificată în clasa sa fiiță. De aceea, excepția apare deoarece „ obiect ” tipul este o clasă părinte.
  • În cele din urmă, „ captură „Se folosește blocul care ia „ Excepție ” ca parametru și imprimă un mesaj pe consolă.

După încheierea fazei de execuție:



Instantaneul de mai sus arată apariția ClassCastException în Java.

Cum se rezolvă ClassCastException în Java?

Sunt utilizate trei soluții posibile pe care dezvoltatorul le poate rezolva cu ușurință sau evita șansa de a ridica „ ClassCastException ” în Java.

Aceste soluții sunt descrise mai jos separat:

Soluția 1: Utilizarea operatorului „instanceof”.

instanță de ” operatorul verifică dacă “ obiect ” este o instanță de tipul dorit sau nu. Această verificare ajută la prevenirea apariției „ ClassCastException ”. De exemplu, vizitați blocul de cod de mai jos:

public clasă TypeCheckingLinuxHint {
public static gol principal ( Şir [ ] argumente ) {

Obiect mamă = „Familia LinuxHint” ;
dacă ( mamă instanță de Şir ) {
Şir copil = ( Şir ) mamă ;
Sistem . afară . println ( „După tipărirea șirului:” + copil ) ;
} altfel {
Sistem . afară . println ( „Obiectul este o instanță de tipul dorit String.” ) ;
}
}
}

Explicația codului de mai sus:

  • În primul rând, „ mamă ” este creat obiectul care este inițializat cu o valoare inactivă în interiorul „ încerca ' bloc.
  • Apoi, utilizați 'dacă' declarație în care „ instanță de operatorul ” este folosit pentru a verifica instanța „ mamă „obiect cu dorit” Şir ' tip.
  • Apoi, dacă condiția revine „ Adevărat ” se efectuează tipărirea și se afișează pe consolă.
  • În caz contrar, mesajul de eroare personalizat este afișat pe consolă.

După încheierea fazei de execuție:

Instantaneul arată că tiparea este realizată cu succes și ClassCastException este rezolvată folosind „ instanță de ” operator.

Soluția 2: revizuiți și corectați operația de tipare

O altă soluție este să verificați codul de mai multe ori și să revizuiți tipurile compatibile pentru tipar. De exemplu, vizitați codul de mai jos în care „ ClassCastException ” este arestat din cauza unui tip dorit incompatibil pentru tipar:

public clasă TypeCheckLinuxHint {
public static gol principal ( Şir [ ] argumente ) {
Obiect mamă = „Familia LinuxHint” ;
Întreg convertitNumber = ( Întreg ) mamă ;
Sistem . afară . println ( „Număr după tipare:” + convertitNumber ) ;
}
}

În codul de mai sus, programatorul a aruncat incorect „ Şir ' la ' Întreg ”.

După încheierea fazei de compilare:

Instantaneul de mai sus arată apariția ClassCastException.

Soluția 3: Utilizarea genericelor

Programatorii pot folosi „ generice ” pentru a specifica tipurile așteptate și pentru a impune siguranța tipului în momentul compilării.

De exemplu, accesați codul de mai jos:

import java.util.ArrayList ;
import java.util.List ;

public clasă folosind generice {
public static gol principal ( Şir [ ] argumente ) {
Listă < Şir > empName = nou ArrayList <> ( ) ;
empName. adăuga ( 'Harry' ) ;
empName. adăuga ( 'Olar' ) ;

Şir Iniţială = empName. obține ( 0 ) ;
Şir Final = empName. obține ( 1 ) ;

Sistem . afară . println ( 'Nume: ' + Iniţială ) ;
Sistem . afară . println ( 'Al doilea nume: ' + Final ) ;
}
}

Explicația codului de mai sus:

  • În primul rând, utilitățile necesare sunt importate în fișierul Java și o clasă de „ folosind generice ” se declară.
  • În continuare, „ ArrayList ” de tip ” Şir ” este declarat cu numele “ empName ” și inițializat prin furnizarea a două elemente de date fictive.
  • Apoi, creați două variabile de tip String numite „ Iniţială ' și ' Final ”. După aceea, atribuiți valori accesând numerele de index.
  • La final, afișați ambele variabile pentru a vedea rezultatul.

După sfârșitul execuției, rezultatul arată astfel:

Instantaneul de mai sus ilustrează faptul că tipărirea a fost efectuată folosind generice.

Concluzie

Pentru a rezolva „ ClassCastException ” în Java, programatorul trebuie să asigure compatibilitatea adecvată a tipului, utilizarea lui “ generice ' si ' instanță de ” operator. Pentru a rezolva excepția, programatorul trebuie să revizuiască și să corecteze operațiunea de turnare, asigurând compatibilitatea corespunzătoare cu tipul. Mai mult, acest „ ClassCastException ” poate fi evitat folosind „ generice ” și cu utilizarea unui „ instanță de ” operator. Acest ghid a demonstrat metoda de rezolvare a ClassCastException în Java.