Kako riješiti ClassCastException u Javi?

Kako Rijesiti Classcastexception U Javi



U Javi, ' ClassCastException ” pomaže identificirati probleme s kompatibilnošću tipa tijekom izvođenja, dopuštajući programerima da ih uhvate rano u fazi razvoja. Također osigurava sigurnost tipa, sprječavajući nedosljednosti u programu. ClassCastException uvelike pomaže u procesu otklanjanja pogrešaka, testiranja, ispravnog pretvaranja tipa itd.

Ovaj vodič demonstrira postupak za rješavanje ClassCastException u Javi.







Kako ClassCastException nastaje u Javi?

' ClassCastException ” osigurava ispravno pretvaranje tipa i sprječava pogreške tijekom izvođenja uzrokovane nekompatibilnim konverzijama tipa. Jednostavno rečeno, ova iznimka se javlja kada se objekt pokušava pretvoriti u nekompatibilni tip.



Na primjer, posjetite donji kod o ' ClassCastException ” u Javi:



uvoz java.io.* ;
uvoz java.lang.* ;
uvoz java.util.* ;

razreda LinuxHint {
//Stvaranje klase vozača
javnost statički poništiti glavni ( Niz [ ] args )
{
probati {
Objekt roditelj = novi Objekt ( ) ;

Niz dijete = ( Niz ) roditelj ;
Sustav . van . println ( dijete ) ;
}
ulov ( Iznimka f ) {
Sustav . van . println ( f ) ;
}
}
}

Objašnjenje gornjeg koda:





  • u ' probati ” blok, instanca objekta “ roditelj ” se deklarira korištenjem “ novi ” ključna riječ.
  • Nakon toga koristi se prevođenje tipa u kojem se ' objekt ” vrsta se tipizira i ima naziv „ dijete ”.
  • Ovo priređivanje tipa krši pravilo da roditeljska klasa ne smije biti prebačeno u svoj podređeni razred. Zbog toga nastaje iznimka jer „ objekt ” tip je nadređena klasa.
  • Na kraju, “ ulov ' koristi se blok koji uzima ' Iznimka ” kao parametar i ispisuje poruku na konzoli.

Nakon završetka faze izvršenja:



Gornja snimka prikazuje pojavu ClassCastException u Javi.

Kako riješiti ClassCastException u Javi?

Koriste se tri moguća rješenja koja razvojni programer može lako riješiti ili izbjeći priliku za podizanje ' ClassCastException ” na Javi.

Ta su rješenja zasebno opisana u nastavku:

Rješenje 1: Upotreba operatora 'instanceof'.

' instanceof ' operator provjerava je li ' objekt ” je li instanca željenog tipa ili ne. Ova provjera pomaže u sprječavanju pojave ' ClassCastException ”. Na primjer, posjetite donji blok koda:

javnost razreda TypeCheckingLinuxHint {
javnost statički poništiti glavni ( Niz [ ] args ) {

Objekt roditelj = 'Obitelj LinuxHint' ;
ako ( roditelj instanceof Niz ) {
Niz dijete = ( Niz ) roditelj ;
Sustav . van . println ( 'Nakon upisivanja niza: ' + dijete ) ;
} drugo {
Sustav . van . println ( 'Objekt je instanca željenog tipa String.' ) ;
}
}
}

Objašnjenje gornjeg koda:

  • Prvo, ' roditelj ” stvara se objekt koji se inicijalizira s lažnom vrijednošću unutar „ probati ' blok.
  • Zatim upotrijebite 'ako' izjava u kojoj je ' instanceof ” koristi se za provjeru instance „ roditelj ” objekt sa željenim ” Niz ” vrsta.
  • Zatim, ako se uvjet vrati ' pravi ” tipiziranje se izvodi i prikazuje na konzoli.
  • Inače će se na konzoli prikazati prilagođena poruka o pogrešci.

Nakon završetka faze izvršenja:

Snimka pokazuje da je tipiziranje uspješno obavljeno i da je ClassCastException razriješen pomoću ' instanceof ” operator.

Rješenje 2: Pregledajte i ispravite operaciju tipiziranja

Drugo rješenje je višestruka provjera koda i pregled kompatibilnih tipova za tipiziranje. Na primjer, posjetite donji kod u kojem je ' ClassCastException ” biva uhićen zbog nekompatibilnog željenog tipa za tipiziranje:

javnost razreda TypeCheckLinuxHint {
javnost statički poništiti glavni ( Niz [ ] args ) {
Objekt roditelj = 'Obitelj LinuxHint' ;
Cijeli broj pretvoreniBroj = ( Cijeli broj ) roditelj ;
Sustav . van . println ( 'Broj nakon upisivanja: ' + pretvoreniBroj ) ;
}
}

U gornjem kodu, programer je netočno izbacio ' Niz ” do “ Cijeli broj ”.

Nakon završetka faze kompilacije:

Gornja snimka prikazuje pojavu ClassCastException.

Rješenje 3: Upotreba generičkih lijekova

Programeri mogu koristiti ' generici ” za specificiranje očekivanih tipova i nametanje sigurnosti tipa u vrijeme kompilacije.

Na primjer, posjetite donji kod:

uvoz java.util.ArrayList ;
uvoz java.util.List ;

javnost razreda koristeći Generics {
javnost statički poništiti glavni ( Niz [ ] args ) {
Popis < Niz > empName = novi ArrayList <> ( ) ;
empName. dodati ( 'Harry' ) ;
empName. dodati ( 'Lončar' ) ;

Niz Početna = empName. dobiti ( 0 ) ;
Niz Konačna = empName. dobiti ( 1 ) ;

Sustav . van . println ( 'Ime: ' + Početna ) ;
Sustav . van . println ( 'Drugi naziv: ' + Konačna ) ;
}
}

Objašnjenje gornjeg koda:

  • Prvo se potrebni uslužni programi uvoze u Java datoteku, a klasa ' koristeći Generics ” se izjavljuje.
  • Zatim, ' ArrayList ' tipa ' Niz ” se deklarira pod imenom “ empName ” i inicijaliziran pružanjem dva lažna podatkovna elementa.
  • Zatim kreirajte dvije varijable tipa String pod nazivom ' Početna ' i ' Konačna ”. Nakon toga dodijelite vrijednosti pristupom brojevima indeksa.
  • Na kraju, prikažite obje varijable da vidite rezultat.

Nakon završetka izvršenja, izlaz izgleda ovako:

Gornja snimka ilustrira da je tipiziranje izvršeno korištenjem generičkih oblika.

Zaključak

Za rješavanje ' ClassCastException ' u Javi, programer mora osigurati ispravnu kompatibilnost tipa, korištenje ' generici ' i ' instanceof ” operator. Da bi riješio iznimku, programer mora pregledati i ispraviti operaciju pretvaranja osiguravajući odgovarajuću kompatibilnost tipa. Štoviše, ovaj “ ClassCastException ' može se izbjeći korištenjem ' generici ' i uz korištenje ' instanceof ” operator. Ovaj vodič demonstrira metodu za rješavanje ClassCastException u Javi.