Hur löser man ClassCastException i Java?

Hur Loser Man Classcastexception I Java



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.