Kako razrešiti ClassCastException v Javi?

Kako Razresiti Classcastexception V Javi



V Javi je » ClassCastException ” pomaga prepoznati težave z združljivostjo tipov med izvajanjem, saj razvijalcem omogoča, da jih odkrijejo zgodaj v razvojni fazi. Zagotavlja tudi varnost tipa in preprečuje nedoslednosti v programu. Izjema ClassCastException zelo pomaga pri procesu odpravljanja napak, testiranja, pravilnega uvajanja tipa itd.

Ta priročnik prikazuje postopek za razrešitev ClassCastException v Javi.







Kako ClassCastException nastane v Javi?

' ClassCastException ” zagotavlja pravilno pretvorbo tipa in preprečuje napake med izvajanjem, ki jih povzročajo nezdružljive pretvorbe tipa. Preprosto povedano, ta izjema se vrže, ko se objekt poskuša preoblikovati v nezdružljiv tip.



Na primer, obiščite spodnjo kodo o » ClassCastException « v Javi:



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

razred LinuxHint {
//Ustvarjanje razreda voznika
javnosti statična praznina glavni ( Vrvica [ ] args )
{
poskusi {
Objekt starš = novo Objekt ( ) ;

Vrvica otrok = ( Vrvica ) starš ;
Sistem . ven . println ( otrok ) ;
}
ulov ( Izjema f ) {
Sistem . ven . println ( f ) ;
}
}
}

Razlaga zgornje kode:





  • V ' poskusi ” blok, primerek predmeta “ starš ' je deklariran z uporabo ' novo ” ključna beseda.
  • Po tem se uporabi pretvorba tipov, v kateri je » predmet ” se tipizira in ima ime „ otrok ”.
  • Ta pretvorba tipov krši pravilo, da nadrejeni razred ne sme biti pretvorjen v podrejeni razred. Zato nastane izjema, ker ' predmet ” je nadrejeni razred.
  • Na koncu je ' ulov » uporablja se blok, ki sprejme » Izjema ” kot parameter in natisne sporočilo na konzoli.

Po koncu izvedbene faze:



Zgornji posnetek prikazuje pojav ClassCastException v Javi.

Kako razrešiti ClassCastException v Javi?

Uporabljene so tri možne rešitve, ki jih lahko razvijalec enostavno razreši ali se izogne ​​možnosti dviga ' ClassCastException « v Javi.

Te rešitve so ločeno opisane spodaj:

1. rešitev: uporaba operatorja »instanceof«.

' instanceof ” preveri, ali je predmet ” je primerek želene vrste ali ne. To preverjanje pomaga preprečiti pojav ' ClassCastException ”. Na primer, obiščite spodnji kodni blok:

javnosti razred TypeCheckingLinuxHint {
javnosti statična praznina glavni ( Vrvica [ ] args ) {

Objekt starš = 'Družina LinuxHint' ;
če ( starš instanceof Vrvica ) {
Vrvica otrok = ( Vrvica ) starš ;
Sistem . ven . println ( 'Po pretvorbi niza: ' + otrok ) ;
} drugače {
Sistem . ven . println ( 'Predmet je primerek želenega tipa String.' ) ;
}
}
}

Razlaga zgornje kode:

  • Prvič, ' starš ' je ustvarjen objekt, ki je inicializiran z navidezno vrednostjo znotraj ' poskusi ” blok.
  • Nato uporabite 'če' izjava, v kateri je ' instanceof ' se uporablja za preverjanje primerka ' starš 'predmet z želenim' Vrvica ” vrsta.
  • Nato, če se pogoj vrne ' prav ” se izvede pretvorba tipov in prikaže na konzoli.
  • V nasprotnem primeru se sporočilo o napaki po meri prikaže na konzoli.

Po koncu izvedbene faze:

Posnetek kaže, da je pretvorba tipov uspešno opravljena in da je izjema ClassCastException razrešena z uporabo » instanceof ” operaterja.

Rešitev 2: Preglejte in popravite operacijo tipiziranja

Druga rešitev je večkratno preverjanje kode in pregled združljivih vrst za pretvorbo tipov. Na primer, obiščite spodnjo kodo, v kateri je » ClassCastException ” je aretiran zaradi nezdružljivega želenega tipa za pretvorbo:

javnosti razred TypeCheckLinuxHint {
javnosti statična praznina glavni ( Vrvica [ ] args ) {
Objekt starš = 'Družina LinuxHint' ;
Celo število pretvorjenaŠtevilo = ( Celo število ) starš ;
Sistem . ven . println ( 'Številka po tipiziranju: ' + pretvorjenaŠtevilo ) ;
}
}

V zgornji kodi je programer nepravilno oddal ' Vrvica ' do ' Celo število ”.

Po koncu faze kompilacije:

Zgornji posnetek prikazuje pojav ClassCastException.

Rešitev 3: Uporaba generičnih zdravil

Programerji lahko uporabljajo » generiki ” za določitev pričakovanih tipov in uveljavitev varnosti tipov v času prevajanja.

Na primer, obiščite spodnjo kodo:

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

javnosti razred usingGenerics {
javnosti statična praznina glavni ( Vrvica [ ] args ) {
Seznam < Vrvica > empName = novo ArrayList <> ( ) ;
empName. dodati ( 'Harry' ) ;
empName. dodati ( 'Potter' ) ;

Vrvica Začetna = empName. dobiti ( 0 ) ;
Vrvica Končno = empName. dobiti ( 1 ) ;

Sistem . ven . println ( 'Ime: ' + Začetna ) ;
Sistem . ven . println ( 'Drugo ime: ' + Končno ) ;
}
}

Razlaga zgornje kode:

  • Najprej se zahtevani pripomočki uvozijo v datoteko Java in razred ' usingGenerics « je razglašeno.
  • Nato je ' ArrayList ' vrste ' Vrvica ' je deklariran z imenom ' empName « in inicializiran z zagotavljanjem dveh navideznih podatkovnih elementov.
  • Nato ustvarite dve spremenljivki vrste niz z imenom ' Začetna « in » Končno ”. Nato dodelite vrednosti z dostopom do indeksnih številk.
  • Na koncu prikažite obe spremenljivki, da vidite rezultat.

Po koncu izvajanja je rezultat videti takole:

Zgornji posnetek prikazuje, da je bilo pretvorbo tipov izvedeno z uporabo generičnih.

Zaključek

Za rešitev ' ClassCastException « v Javi mora programer zagotoviti ustrezno združljivost tipov, uporabo » generiki ' in ' instanceof ” operaterja. Za rešitev izjeme mora programer pregledati in popraviti operacijo ulitja z zagotavljanjem ustrezne združljivosti tipa. Poleg tega ta ' ClassCastException ' se lahko izognete z uporabo ' generiki « in z uporabo » instanceof ” operaterja. Ta priročnik je pokazal metodo za razrešitev izjeme ClassCastException v Javi.