Hogyan lehet megoldani a ClassCastException-t Java-ban?

Hogyan Lehet Megoldani A Classcastexception T Java Ban



Java nyelven a „ ClassCastException ” segít azonosítani a típuskompatibilitási problémákat futás közben, lehetővé téve a fejlesztők számára, hogy a fejlesztési fázis korai szakaszában felismerjék őket. Ezenkívül biztosítja a típusbiztonságot, megelőzve a program inkonzisztenciáit. A ClassCastException sokat segít a hibakeresésben, tesztelésben, helyes típusöntésben stb.

Ez az útmutató bemutatja a ClassCastException feloldásának eljárását Java nyelven.







Hogyan keletkezik a ClassCastException a Java-ban?

A ' ClassCastException ” biztosítja a megfelelő típusöntést, és megakadályozza az inkompatibilis típuskonverziók által okozott futásidejű hibákat. Egyszerűen fogalmazva, ez a kivétel akkor jelenik meg, ha egy objektumot egy nem kompatibilis típusba próbálnak átadni.



Például keresse fel az alábbi kódot a ' ClassCastException ” Java nyelven:



import java.io.* ;
import java.lang.* ;
import java.util.* ;

osztály LinuxHint {
//Sofőr osztály létrehozása
nyilvános statikus üres fő- ( Húr [ ] args )
{
próbáld ki {
Tárgy szülő = új Tárgy ( ) ;

Húr gyermek = ( Húr ) szülő ;
Rendszer . ki . println ( gyermek ) ;
}
fogás ( Kivétel f ) {
Rendszer . ki . println ( f ) ;
}
}
}

A fenti kód magyarázata:





  • Ban,-ben ' próbáld ki 'blokk, egy objektum példánya' szülő ' a ' új ” kulcsszó.
  • Ezt követően a gépelést használják, amelyben a „ tárgy ' típust írnak, és a neve ' gyermek ”.
  • Ez a típusadás sérti azt a szabályt, miszerint a szülőosztályt nem szabad a gyermekosztályára típusosítani. Ezért adódik a kivétel, mert a „ tárgy ” típus egy szülő osztály.
  • Végül a „ fogás 'blokkot használunk, amely a ' Kivétel ” paraméterként, és üzenetet nyomtat a konzolon.

A végrehajtási szakasz vége után:



A fenti pillanatkép a ClassCastException előfordulását mutatja a Java nyelven.

Hogyan lehet megoldani a ClassCastException-t Java-ban?

Három lehetséges megoldást használnak, amelyeket a fejlesztő könnyen megoldhat, vagy elkerülheti annak lehetőségét, hogy a „ ClassCastException ” Java nyelven.

Ezeket a megoldásokat az alábbiakban külön ismertetjük:

1. megoldás: A „példány” operátor használata

A ' Például az ' operátor ellenőrzi, hogy a ' tárgy ” a kívánt típusú példány vagy sem. Ez az ellenőrzés segít megelőzni a „ ClassCastException ”. Például keresse fel az alábbi kódblokkot:

nyilvános osztály TypeCheckingLinuxHint {
nyilvános statikus üres fő- ( Húr [ ] args ) {

Tárgy szülő = 'LinuxHint család' ;
ha ( szülő Például az Húr ) {
Húr gyermek = ( Húr ) szülő ;
Rendszer . ki . println ( 'A String typecasting után: ' + gyermek ) ;
} más {
Rendszer . ki . println ( 'Az objektum a kívánt String típusú példány.' ) ;
}
}
}

A fenti kód magyarázata:

  • Először is a „ szülő ' objektum jön létre, amely egy üres értékkel van inicializálva a ' próbáld ki ' Blokk.
  • Ezután használja a 'ha' nyilatkozat, amelyben a „ Például az ' operátor a ' szülő 'objektum a kívánt' Húr ' típus.
  • Ezután, ha a feltétel visszatér igaz ” a typecasting végrehajtásra kerül, és megjelenik a konzolon.
  • Ellenkező esetben az egyéni hibaüzenet jelenik meg a konzolon.

A végrehajtási szakasz vége után:

A pillanatfelvétel azt mutatja, hogy a típusküldés sikeresen megtörtént, és a ClassCastException feloldása a „ Például az ' operátor.

2. megoldás: Tekintse át és helyesbítse a típusszórási műveletet

Egy másik megoldás a kód többszöri ellenőrzése és a kompatibilis típusok áttekintése a típusküldéshez. Például keresse fel az alábbi kódot, amelyben a ' ClassCastException ” le van tartóztatva egy nem kompatibilis kívánt típus miatt:

nyilvános osztály TypeCheckLinuxHint {
nyilvános statikus üres fő- ( Húr [ ] args ) {
Tárgy szülő = 'LinuxHint család' ;
Egész szám convertedNumber = ( Egész szám ) szülő ;
Rendszer . ki . println ( 'Szám a gépelés után:' + convertedNumber ) ;
}
}

A fenti kódban a programozó helytelenül adta ki a „ Húr ' nak nek ' Egész szám ”.

Az összeállítási fázis vége után:

A fenti pillanatkép a ClassCastException előfordulását mutatja.

3. megoldás: Generikus szerek használata

A programozók használhatják a „ generikumok ” az elvárt típusok megadásához és a típusbiztonság érvényesítéséhez a fordításkor.

Látogassa meg például az alábbi kódot:

import java.util.ArrayList ;
import java.util.List ;

nyilvános osztály Generics használatával {
nyilvános statikus üres fő- ( Húr [ ] args ) {
Lista < Húr > empName = új Tömb lista <> ( ) ;
empName. add hozzá ( 'Harry' ) ;
empName. add hozzá ( 'Fazekas' ) ;

Húr A kezdeti = empName. kap ( 0 ) ;
Húr Végső = empName. kap ( 1 ) ;

Rendszer . ki . println ( 'Keresztnév: ' + A kezdeti ) ;
Rendszer . ki . println ( 'Második név: ' + Végső ) ;
}
}

A fenti kód magyarázata:

  • Először a szükséges segédprogramokat importálja a Java fájlba, és egy „ Generics használatával ” jelenti ki.
  • Ezután a „ Tömb lista 'típusú' Húr ' névvel van deklarálva empName ” és két áladatelem megadásával inicializálva.
  • Ezután hozzon létre két karakterlánc típusú változót ' A kezdeti ” és „ Végső ”. Ezt követően rendeljen hozzá értékeket az indexszámok elérésével.
  • Végül jelenítse meg mindkét változót az eredmény megtekintéséhez.

A végrehajtás befejezése után a kimenet így néz ki:

A fenti pillanatkép azt szemlélteti, hogy a typecasting generikusok használatával történt.

Következtetés

A ' ClassCastException ” Java-ban a programozónak gondoskodnia kell a megfelelő típuskompatibilitásról, a „ generikumok ' és a ' Például az ' operátor. A kivétel megoldásához a programozónak felül kell vizsgálnia és ki kell javítania az öntési műveletet a megfelelő típus-kompatibilitás biztosításával. Ráadásul ez a ' ClassCastException 'elkerülhető a ' generikumok ” és egy „ Például az ' operátor. Ez az útmutató bemutatja a ClassCastException feloldásának módszerét Java nyelven.