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.