Sådan løses ClassCastException i Java?

Sadan Loses Classcastexception I Java



I Java er ' ClassCastException ” hjælper med at identificere type kompatibilitetsproblemer under kørsel ved at give udviklere mulighed for at fange dem tidligt i udviklingsfasen. Det sikrer også typesikkerhed, hvilket forhindrer uoverensstemmelser i programmet. ClassCastException hjælper meget i processen med debugging, test, korrekt type casting osv.

Denne vejledning demonstrerer proceduren til at løse ClassCastException i Java.







Hvordan opstår ClassCastException i Java?

Det ' ClassCastException ” sikrer korrekt typecasting og forhindrer runtime-fejl forårsaget af inkompatible typekonverteringer. Enkelt sagt bliver denne undtagelse kastet, når et objekt forsøges castet til en inkompatibel type.



Besøg for eksempel nedenstående kode om ' ClassCastException ” i Java:



importere java.io.* ;
importere java.lang.* ;
importere java.util.* ;

klasse LinuxTip {
//Oprettelse af førerklasse
offentlig statisk ugyldig vigtigste ( Snor [ ] args )
{
prøve {
Objekt forælder = ny Objekt ( ) ;

Snor barn = ( Snor ) forælder ;
System . ud . println ( barn ) ;
}
fangst ( Undtagelse f ) {
System . ud . println ( f ) ;
}
}
}

Forklaring af ovenstående kode:





  • I ' prøve ' blok, forekomsten af ​​et objekt ' forælder ' erklæres ved at bruge ' ny ” nøgleord.
  • Derefter bruges typecasting, hvor ' objekt ' type bliver typecastet og har navnet ' barn '.
  • Denne typecasting overtræder reglen om, at den overordnede klasse ikke må typecastes til dens underordnede klasse. Derfor opstår undtagelsen, fordi ' objekt ” type er en forældreklasse.
  • I sidste ende vil ' fangst ' blok bruges, der tager ' Undtagelse ” som en parameter og udskriver en meddelelse på konsollen.

Efter afslutningen af ​​udførelsesfasen:



Ovenstående snapshot viser forekomsten af ​​ClassCastException i Java.

Sådan løses ClassCastException i Java?

Der bruges tre mulige løsninger, som udvikleren nemt kan løse eller undgå chancen for at hæve ' ClassCastException ' i Java.

Disse løsninger er beskrevet separat nedenfor:

Løsning 1: Brug af 'instanceof' Operator

Det ' forekomst af '-operatøren verificerer, om ' objekt ” er en instans af den ønskede type eller ej. Denne verifikation hjælper med at forhindre forekomsten af ​​' ClassCastException ”. Besøg for eksempel nedenstående kodeblok:

offentlig klasse TypeCheckingLinuxTip {
offentlig statisk ugyldig vigtigste ( Snor [ ] args ) {

Objekt forælder = 'LinuxHint Family' ;
hvis ( forælder forekomst af Snor ) {
Snor barn = ( Snor ) forælder ;
System . ud . println ( 'Efter typecasting af streng: ' + barn ) ;
} andet {
System . ud . println ( 'Objekt er en forekomst af den ønskede type String.' ) ;
}
}
}

Forklaring af ovenstående kode:

  • For det første ' forælder '-objekt oprettes, som initialiseres med en dummy-værdi inde i ' prøve ” blok.
  • Brug derefter 'hvis' erklæring, hvori ' forekomst af '-operator bruges til at kontrollere forekomsten af ​​' forælder ' objekt med ønsket ' Snor ' type.
  • Dernæst, hvis betingelsen returnerer ' rigtigt ” typecastingen udføres og vises på konsollen.
  • Ellers vises den brugerdefinerede fejlmeddelelse på konsollen.

Efter afslutningen af ​​udførelsesfasen:

Snapshottet viser, at typecasting er udført med succes, og ClassCastException er løst ved hjælp af ' forekomst af ” operatør.

Løsning 2: Gennemgå og korrekt typecasting

En anden løsning er at tjekke koden flere gange og gennemgå de kompatible typer til typecasting. Besøg f.eks. nedenstående kode, hvori ' ClassCastException ” bliver arresteret på grund af en inkompatibel ønsket type til typecasting:

offentlig klasse TypeCheckLinuxTip {
offentlig statisk ugyldig vigtigste ( Snor [ ] args ) {
Objekt forælder = 'LinuxHint Family' ;
Heltal konverteret Antal = ( Heltal ) forælder ;
System . ud . println ( 'Nummer efter typecasting: ' + konverteret Antal ) ;
}
}

I ovenstående kode castede programmøren forkert ' Snor ' til ' Heltal '.

Efter afslutningen af ​​kompileringsfasen:

Ovenstående snapshot viser forekomsten af ​​ClassCastException.

Løsning 3: Brug af generiske lægemidler

Programmørerne kan bruge ' generiske lægemidler ” for at specificere de forventede typer og håndhæve typesikkerhed på kompileringstidspunktet.

Besøg for eksempel nedenstående kode:

importere java.util.ArrayList ;
importere java.util.List ;

offentlig klasse ved at bruge Generics {
offentlig statisk ugyldig vigtigste ( Snor [ ] args ) {
Liste < Snor > empName = ny ArrayList <> ( ) ;
empName. tilføje ( 'Harry' ) ;
empName. tilføje ( 'Potter' ) ;

Snor Initial = empName. ( 0 ) ;
Snor Finale = empName. ( 1 ) ;

System . ud . println ( 'Fornavn: ' + Initial ) ;
System . ud . println ( 'Efternavn: ' + Finale ) ;
}
}

Forklaring af ovenstående kode:

  • Først importeres de nødvendige hjælpeprogrammer til Java-filen, og en klasse af ' ved at bruge Generics ” erklæres.
  • Dernæst ' ArrayList ' af typen ' Snor ' er erklæret med navnet ' empName ” og initialiseret ved at levere to dummy-dataelementer.
  • Opret derefter to strengtypevariabler med navnet ' Initial ' og ' Finale ”. Tildel derefter værdier ved at få adgang til indeksnumrene.
  • Til sidst skal du vise begge variabler for at se resultatet.

Efter afslutningen af ​​udførelsen ser outputtet sådan ud:

Ovenstående snapshot illustrerer, at typecastingen er blevet udført ved brug af generiske stoffer.

Konklusion

For at løse ' ClassCastException ' i Java skal programmøren sikre korrekt typekompatibilitet, brug af ' generiske lægemidler ' og ' forekomst af ” operatør. For at løse undtagelsen skal programmøren gennemgå og rette casting-operationen ved at sikre korrekt typekompatibilitet. Desuden er denne ' ClassCastException ' kan undgås ved at bruge ' generiske lægemidler ' og ved brug af en ' forekomst af ” operatør. Denne vejledning har demonstreret metoden til at løse ClassCastException i Java.