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.