I Java är ' ClassCastException ” hjälper till att identifiera typkompatibilitetsproblem vid körning, genom att tillåta utvecklare att fånga dem tidigt i utvecklingsfasen. Det säkerställer också typsäkerhet och förhindrar inkonsekvenser i programmet. ClassCastException hjälper mycket i processen med felsökning, testning, korrekt typcasting, etc.
Den här guiden visar proceduren för att lösa ClassCastException i Java.
Hur uppstår ClassCastException i Java?
den ' ClassCastException ” säkerställer korrekt typcasting och förhindrar körtidsfel orsakade av inkompatibla typkonverteringar. Enkelt uttryckt kastas detta undantag när ett objekt försöker gjutas till en inkompatibel typ.
Besök till exempel koden nedan om ' ClassCastException ' i Java:
importera java.io.* ;
importera java.lang.* ;
importera java.util.* ;
klass LinuxTips {
//Skapande av förarklass
offentlig statisk tomhet huvud ( Sträng [ ] args )
{
Prova {
Objekt förälder = ny Objekt ( ) ;
Sträng barn = ( Sträng ) förälder ;
Systemet . ut . println ( barn ) ;
}
fånga ( Undantag f ) {
Systemet . ut . println ( f ) ;
}
}
}
Förklaring av ovanstående kod:
- I ' Prova ' block, instansen av ett objekt ' förälder ' deklareras genom att använda ' ny ' nyckelord.
- Därefter används typcasting där ' objekt ' typ castas och har namnet ' barn ”.
- Denna typcasting bryter mot regeln att den överordnade klassen inte får typcastas till sin underordnade klass. Det är därför undantaget uppstår eftersom ' objekt ” typ är en föräldraklass.
- I slutändan, ' fånga ”block används som tar ” Undantag ” som en parameter och skriver ut ett meddelande på konsolen.
Efter slutet av utförandefasen:
Ovanstående ögonblicksbild visar förekomsten av ClassCastException i Java.
Hur löser man ClassCastException i Java?
Tre möjliga lösningar används som utvecklaren enkelt kan lösa eller undvika chansen att höja ' ClassCastException ' i Java.
Dessa lösningar beskrivs nedan separat:
Lösning 1: Användning av 'instanceof' Operator
den ' instans av '-operatören verifierar om ' objekt ” är en instans av önskad typ eller inte. Denna verifiering hjälper till att förhindra förekomsten av ' ClassCastException ”. Besök till exempel kodblocket nedan:
offentlig klass TypCheckingLinuxHint {offentlig statisk tomhet huvud ( Sträng [ ] args ) {
Objekt förälder = 'LinuxHint Family' ;
om ( förälder instans av Sträng ) {
Sträng barn = ( Sträng ) förälder ;
Systemet . ut . println ( 'Efter typcasting String: ' + barn ) ;
} annan {
Systemet . ut . println ( 'Objekt är en instans av önskad typ String.' ) ;
}
}
}
Förklaring av ovanstående kod:
- Först, ' förälder ”-objekt skapas som initieras med ett dummyvärde inuti ” Prova ” block.
- Använd sedan 'om' uttalande där ' instans av '-operatorn används för att kontrollera instansen av ' förälder ' objekt med önskat ' Sträng ' typ.
- Nästa, om villkoret returnerar ' Sann ” typcastingen utförs och visas på konsolen.
- Annars visas det anpassade felmeddelandet på konsolen.
Efter slutet av utförandefasen:
Ögonblicksbilden visar att typcasting har gjorts framgångsrikt och ClassCastException löses med hjälp av ' instans av ' operatör.
Lösning 2: Granska och korrigera typcasting
En annan lösning är att kontrollera koden flera gånger och granska de kompatibla typerna för typcasting. Besök till exempel koden nedan där ' ClassCastException ” arresteras på grund av en inkompatibel önskad typ för typcasting:
offentlig klass TypeCheckLinuxHint {offentlig statisk tomhet huvud ( Sträng [ ] args ) {
Objekt förälder = 'LinuxHint Family' ;
Heltal konverterat Antal = ( Heltal ) förälder ;
Systemet . ut . println ( 'Nummer efter typcasting: ' + konverterat Antal ) ;
}
}
I ovanstående kod castade programmeraren felaktigt ' Sträng ' till ' Heltal ”.
Efter slutet av kompileringsfasen:
Ovanstående ögonblicksbild visar förekomsten av ClassCastException.
Lösning 3: Användning av generika
Programmerarna kan använda ' generika ” för att specificera de förväntade typerna och upprätthålla typsäkerheten vid kompileringstillfället.
Besök till exempel koden nedan:
importera java.util.ArrayList ;importera java.util.List ;
offentlig klass använder Generics {
offentlig statisk tomhet huvud ( Sträng [ ] args ) {
Lista < Sträng > empName = ny ArrayList <> ( ) ;
empName. Lägg till ( 'Harry' ) ;
empName. Lägg till ( 'Krukmakare' ) ;
Sträng Första = empName. skaffa sig ( 0 ) ;
Sträng Slutlig = empName. skaffa sig ( 1 ) ;
Systemet . ut . println ( 'Förnamn: ' + Första ) ;
Systemet . ut . println ( 'Andranamn: ' + Slutlig ) ;
}
}
Förklaring av ovanstående kod:
- Först importeras de nödvändiga verktygen till Java-filen och en klass av ' använder Generics ” deklareras.
- Därefter ' ArrayList 'av typen' Sträng ' deklareras med namnet ' empName ” och initieras genom att tillhandahålla två dummy-dataelement.
- Skapa sedan två strängvariabler med namnet ' Första ' och ' Slutlig ”. Tilldela sedan värden genom att komma åt indexnumren.
- Till slut, visa båda variablerna för att se resultatet.
Efter slutet av körningen ser utdata ut så här:
Ovanstående ögonblicksbild illustrerar att typcasting har utförts med hjälp av generika.
Slutsats
För att lösa ' ClassCastException ' i Java måste programmeraren säkerställa korrekt typkompatibilitet, användning av ' generika ' och den ' instans av ' operatör. För att lösa undantaget måste programmeraren granska och korrigera cast-operationen genom att säkerställa korrekt typkompatibilitet. Dessutom, denna ' ClassCastException ' kan undvikas genom att använda ' generika ' och med användning av en ' instans av ' operatör. Den här guiden har demonstrerat metoden för att lösa ClassCastException i Java.