Ako vyriešiť výnimku ClassCastException v jazyku Java?

Ako Vyriesit Vynimku Classcastexception V Jazyku Java



V Jave je „ ClassCastException ” pomáha identifikovať problémy s kompatibilitou typov za behu tým, že umožňuje vývojárom zachytiť ich už vo fáze vývoja. Zabezpečuje tiež typovú bezpečnosť, čím zabraňuje nezrovnalostiam v programe. ClassCastException veľmi pomáha v procese ladenia, testovania, správneho pretypovania atď.

Táto príručka ukazuje postup riešenia ClassCastException v jazyku Java.







Ako vzniká výnimka ClassCast v jazyku Java?

' ClassCastException ” zaisťuje správne pretypovanie a zabraňuje chybám za behu spôsobeným nekompatibilnými prevodmi typov. Zjednodušene povedané, táto výnimka sa vyvolá, keď sa objekt pokúsi pretypovať na nekompatibilný typ.



Navštívte napríklad nižšie uvedený kód o „ ClassCastException “ v jazyku Java:



importovať java.io.* ;
importovať java.lang.* ;
importovať java.util.* ;

trieda LinuxHint {
//Vytvorenie triedy ovládačov
verejnosti statické neplatné Hlavná ( Reťazec [ ] args )
{
skúste {
Objekt rodič = Nový Objekt ( ) ;

Reťazec dieťa = ( Reťazec ) rodič ;
Systém . von . println ( dieťa ) ;
}
chytiť ( Výnimka f ) {
Systém . von . println ( f ) ;
}
}
}

Vysvetlenie vyššie uvedeného kódu:





  • V ' skúste 'blok, inštancia objektu' rodič “ sa deklaruje použitím „ Nový kľúčové slovo.
  • Potom sa používa typcasting, v ktorom sa „ objekt ” typ sa typuje a má názov “ dieťa “.
  • Toto typové obsadenie porušuje pravidlo, že rodičovská trieda nesmie byť typizovaná do svojej podradenej triedy. Preto vzniká výnimka, pretože „ objekt ” je nadradená trieda.
  • Na záver, „ chytiť “ používa sa blok, ktorý zaberá “ Výnimka ” ako parameter a vytlačí správu na konzole.

Po ukončení vykonávacej fázy:



Vyššie uvedená snímka ukazuje výskyt ClassCastException v jazyku Java.

Ako vyriešiť výnimku ClassCastException v jazyku Java?

Používajú sa tri možné riešenia, ktoré môže vývojár ľahko vyriešiť alebo sa vyhnúť možnosti zvýšiť „ ClassCastException “ v jazyku Java.

Tieto riešenia sú popísané nižšie samostatne:

Riešenie 1: Použitie operátora „instanceof“.

' instanceof “ operátor overí, či “ objekt ” je alebo nie je inštanciou požadovaného typu. Toto overenie pomáha predchádzať výskytu „ ClassCastException “. Navštívte napríklad nižšie uvedený blok kódu:

verejnosti trieda TypeCheckingLinuxHint {
verejnosti statické neplatné Hlavná ( Reťazec [ ] args ) {

Objekt rodič = 'LinuxHint Family' ;
ak ( rodič instanceof Reťazec ) {
Reťazec dieťa = ( Reťazec ) rodič ;
Systém . von . println ( 'Po pretypovaní reťazca: ' + dieťa ) ;
} inak {
Systém . von . println ( 'Object je inštanciou požadovaného typu String.' ) ;
}
}
}

Vysvetlenie vyššie uvedeného kódu:

  • Po prvé, „ rodič Vytvorí sa objekt, ktorý je inicializovaný s fiktívnou hodnotou vo vnútri „ skúste “blok.
  • Potom použite 'ak' vyhlásenie, v ktorom sa „ instanceof Operátor ' sa používa na kontrolu inštancie ' rodič “objekt s požadovaným” Reťazec typ “.
  • Ďalej, ak sa podmienka vráti „ pravda ” sa vykoná typové obsadenie a zobrazí sa na konzole.
  • V opačnom prípade sa na konzole zobrazí vlastné chybové hlásenie.

Po ukončení vykonávacej fázy:

Snímka ukazuje, že typcasting je úspešne vykonaný a ClassCastException je vyriešená pomocou „ instanceof ” operátor.

Riešenie 2: Kontrola a správna operácia typového odliatku

Ďalším riešením je skontrolovať kód viackrát a skontrolovať kompatibilné typy na typové obsadenie. Navštívte napríklad nižšie uvedený kód, v ktorom je „ ClassCastException “ je zatknutý kvôli nekompatibilnému požadovanému typu na typizáciu:

verejnosti trieda TypeCheckLinuxHint {
verejnosti statické neplatné Hlavná ( Reťazec [ ] args ) {
Objekt rodič = 'LinuxHint Family' ;
Celé číslo convertNumber = ( Celé číslo ) rodič ;
Systém . von . println ( 'Číslo po typizácii: ' + convertNumber ) ;
}
}

Vo vyššie uvedenom kóde programátor nesprávne odovzdal „ Reťazec “ až “ Celé číslo “.

Po skončení fázy kompilácie:

Vyššie uvedená snímka ukazuje výskyt ClassCastException.

Riešenie 3: Použitie generík

Programátori môžu použiť „ generiká ” na špecifikáciu očakávaných typov a vynútenie typovej bezpečnosti v čase kompilácie.

Navštívte napríklad nasledujúci kód:

importovať java.util.ArrayList ;
importovať java.util.List ;

verejnosti trieda pomocou generík {
verejnosti statické neplatné Hlavná ( Reťazec [ ] args ) {
Zoznam < Reťazec > empName = Nový ArrayList <> ( ) ;
empName. pridať ( 'Harry' ) ;
empName. pridať ( 'potter' ) ;

Reťazec Počiatočné = empName. dostať ( 0 ) ;
Reťazec Finálny = empName. dostať ( 1 ) ;

Systém . von . println ( 'Krstné meno: ' + Počiatočné ) ;
Systém . von . println ( 'Druhé meno: ' + Finálny ) ;
}
}

Vysvetlenie vyššie uvedeného kódu:

  • Najprv sa do súboru Java naimportujú požadované nástroje a trieda „ pomocou generík “ je vyhlásené.
  • Ďalej, „ ArrayList 'typu' Reťazec “ je deklarovaný názvom “ empName “ a inicializuje sa poskytnutím dvoch fiktívnych dátových prvkov.
  • Potom vytvorte dve premenné typu String s názvom „ Počiatočné “ a „ Finálny “. Potom priraďte hodnoty prístupom k indexovým číslam.
  • Nakoniec zobrazte obe premenné, aby ste videli výsledok.

Po ukončení vykonávania vyzerá výstup takto:

Vyššie uvedená snímka ilustruje, že typové obsadenie bolo vykonané pomocou generík.

Záver

Na vyriešenie problému „ ClassCastException ” v Jave musí programátor zabezpečiť správnu typovú kompatibilitu, použitie “ generiká “ a „ instanceof ” operátor. Na vyriešenie výnimky musí programátor skontrolovať a opraviť operáciu odlievania zabezpečením správnej kompatibility typu. Navyše táto „ ClassCastException “ sa dá vyhnúť použitím “ generiká “ a s použitím „ instanceof ” operátor. Táto príručka demonštrovala metódu riešenia ClassCastException v jazyku Java.