Hoe ClassCastException in Java op te lossen?

Hoe Classcastexception In Java Op Te Lossen



Op Java is de “ ClassCastException ” helpt bij het identificeren van typecompatibiliteitsproblemen tijdens runtime, doordat ontwikkelaars ze vroeg in de ontwikkelingsfase kunnen opsporen. Het zorgt ook voor typeveiligheid, waardoor inconsistenties in het programma worden voorkomen. De ClassCastException helpt veel bij het debuggen, testen, correct type casten, etc.

Deze handleiding demonstreert de procedure om ClassCastException in Java op te lossen.







Hoe ClassCastException ontstaat in Java?

De ' ClassCastException ” zorgt voor een juiste typecasting en voorkomt runtime-fouten veroorzaakt door incompatibele typeconversies. In eenvoudige bewoordingen wordt deze uitzondering gegenereerd wanneer wordt geprobeerd een object naar een incompatibel type te casten.



Bezoek bijvoorbeeld de onderstaande code over de ' ClassCastException ” op Java:



importeren java.io.* ;
importeren java.lang.* ;
importeren java.util.* ;

klas LinuxHint {
//Creatie van driverklasse
openbaar statisch leegte voornaamst ( Snaar [ ] argumenten )
{
poging {
Voorwerp ouder = nieuw Voorwerp ( ) ;

Snaar kind = ( Snaar ) ouder ;
Systeem . uit . println ( kind ) ;
}
vangst ( Uitzondering F ) {
Systeem . uit . println ( F ) ;
}
}
}

Uitleg van de bovenstaande code:





  • In de ' poging 'blok, de instantie van een object' ouder ” wordt verklaard door gebruik te maken van de “ nieuw ' sleutelwoord.
  • Daarna wordt typecasting gebruikt waarbij de “ voorwerp ' type wordt getypeerd en heeft de naam ' kind ”.
  • Deze typecasting is in strijd met de regel dat de bovenliggende klasse niet mag worden getypecast naar de onderliggende klasse. Daarom ontstaat de uitzondering omdat de “ voorwerp ” type is een bovenliggende klasse.
  • Op het einde, de “ vangst ” blok wordt gebruikt dat duurt “ Uitzondering ” als parameter en drukt een bericht af op de console.

Na afloop van de uitvoeringsfase:



De bovenstaande momentopname toont het optreden van ClassCastException in Java.

Hoe ClassCastException in Java op te lossen?

Er worden drie mogelijke oplossingen gebruikt die de ontwikkelaar gemakkelijk kan oplossen of de kans vermijden om de “ ClassCastException ” op Java.

Deze oplossingen worden hieronder afzonderlijk beschreven:

Oplossing 1: Gebruik van 'instanceof' Operator

De ' instantie van ”-operator verifieert of de “ voorwerp ” is een exemplaar van het gewenste type of niet. Deze verificatie helpt bij het voorkomen van ' ClassCastException ”. Bezoek bijvoorbeeld het onderstaande codeblok:

openbaar klas TypeCheckingLinuxHint {
openbaar statisch leegte voornaamst ( Snaar [ ] argumenten ) {

Voorwerp ouder = 'LinuxHint-familie' ;
als ( ouder instantie van Snaar ) {
Snaar kind = ( Snaar ) ouder ;
Systeem . uit . println ( 'Na typecasting String: ' + kind ) ;
} anders {
Systeem . uit . println ( 'Object is een instantie van het gewenste type String.' ) ;
}
}
}

Uitleg van de bovenstaande code:

  • Eerst de ' ouder ' wordt een object gemaakt dat wordt geïnitialiseerd met een dummy-waarde in de ' poging ” blok.
  • Gebruik dan de 'als' verklaring waarin de “ instantie van ” operator wordt gebruikt om de instantie van de “ ouder ” object met gewenste “ Snaar ' typen.
  • Vervolgens, als de voorwaarde terugkeert ' WAAR ” de typecasting wordt uitgevoerd en weergegeven op de console.
  • Anders wordt het aangepaste foutbericht weergegeven op de console.

Na afloop van de uitvoeringsfase:

De momentopname laat zien dat typecasting met succes is uitgevoerd en ClassCastException is opgelost met behulp van de ' instantie van ” exploitant.

Oplossing 2: controleer en corrigeer de werking van Typecasting

Een andere oplossing is om de code meerdere keren te controleren en de compatibele typen voor typecasting te bekijken. Bezoek bijvoorbeeld de onderstaande code waarin de ' ClassCastException ” wordt gearresteerd vanwege een incompatibel gewenst type voor typecasting:

openbaar klas TypeCheckLinuxHint {
openbaar statisch leegte voornaamst ( Snaar [ ] argumenten ) {
Voorwerp ouder = 'LinuxHint-familie' ;
Geheel getal geconverteerdNummer = ( Geheel getal ) ouder ;
Systeem . uit . println ( 'Nummer na Typecasting: ' + geconverteerdNummer ) ;
}
}

In de bovenstaande code heeft de programmeur de ' Snaar ' naar ' Geheel getal ”.

Na het einde van de compilatiefase:

De bovenstaande momentopname toont het optreden van ClassCastException.

Oplossing 3: gebruik van generieke geneesmiddelen

De programmeurs kunnen “ Merkloos product ” om de verwachte typen te specificeren en typeveiligheid af te dwingen tijdens het compileren.

Bezoek bijvoorbeeld de onderstaande code:

importeren java.util.ArrayList ;
importeren java.util.Lijst ;

openbaar klas met behulp van Generics {
openbaar statisch leegte voornaamst ( Snaar [ ] argumenten ) {
Lijst < Snaar > empNaam = nieuw ArrayLijst <> ( ) ;
empNaam. toevoegen ( 'Harry' ) ;
empNaam. toevoegen ( 'Pottenbakker' ) ;

Snaar Voorletter = empNaam. krijgen ( 0 ) ;
Snaar Laatste = empNaam. krijgen ( 1 ) ;

Systeem . uit . println ( 'Voornaam: ' + Voorletter ) ;
Systeem . uit . println ( 'Tweede naam: ' + Laatste ) ;
}
}

Uitleg van de bovenstaande code:

  • Eerst worden de vereiste hulpprogramma's geïmporteerd in het Java-bestand en een klasse van ' met behulp van Generics ” wordt verklaard.
  • Vervolgens de “ ArrayLijst ' van type ' Snaar ” wordt verklaard met de naam “ empNaam ” en geïnitialiseerd door twee dummy-gegevenselementen op te geven.
  • Maak vervolgens twee String-type variabelen met de naam ' Voorletter ' En ' Laatste ”. Wijs daarna waarden toe door toegang te krijgen tot de indexnummers.
  • Geef uiteindelijk beide variabelen weer om het resultaat te zien.

Na het einde van de uitvoering ziet de uitvoer er als volgt uit:

De bovenstaande snapshot illustreert dat de typecasting is uitgevoerd met behulp van generieke geneesmiddelen.

Conclusie

Om de “ ClassCastException ” in Java moet de programmeur zorgen voor de juiste typecompatibiliteit, gebruik van “ Merkloos product ' en de ' instantie van ” exploitant. Om de uitzondering op te lossen, moet de programmeur de castingbewerking controleren en corrigeren door te zorgen voor de juiste typecompatibiliteit. Bovendien is dit “ ClassCastException ” kan worden vermeden door “ Merkloos product ” en met behulp van een “ instantie van ” exploitant. Deze handleiding heeft de methode gedemonstreerd om de ClassCastException in Java op te lossen.