Wie löse ich ClassCastException in Java?

Wie Lose Ich Classcastexception In Java



In Java ist das „ ClassCastException „ hilft, Typkompatibilitätsprobleme zur Laufzeit zu erkennen, indem es Entwicklern ermöglicht, sie frühzeitig in der Entwicklungsphase zu erkennen. Es gewährleistet außerdem die Typsicherheit und verhindert Inkonsistenzen im Programm. Die ClassCastException hilft sehr beim Debuggen, Testen, korrekten Typumwandeln usw.

Dieses Handbuch demonstriert das Verfahren zum Auflösen von ClassCastException in Java.







Wie entsteht ClassCastException in Java?

Der ' ClassCastException „ stellt eine ordnungsgemäße Typumwandlung sicher und verhindert Laufzeitfehler, die durch inkompatible Typkonvertierungen verursacht werden. Vereinfacht ausgedrückt wird diese Ausnahme ausgelöst, wenn versucht wird, ein Objekt in einen inkompatiblen Typ umzuwandeln.



Besuchen Sie zum Beispiel den folgenden Code über „ ClassCastException ” in Java:



importieren java.io.* ;
importieren java.lang.* ;
importieren java.util.* ;

Klasse LinuxHint {
//Erstellung einer Treiberklasse
öffentlich statisch Leere hauptsächlich ( Zeichenfolge [ ] args )
{
versuchen {
Objekt Elternteil = neu Objekt ( ) ;

Zeichenfolge Kind = ( Zeichenfolge ) Elternteil ;
System . aus . println ( Kind ) ;
}
fangen ( Ausnahme F ) {
System . aus . println ( F ) ;
}
}
}

Erklärung des obigen Codes:





  • Im ' versuchen „Block, die Instanz eines Objekts“ Elternteil ” wird durch die Verwendung von „ deklariert neu ' Stichwort.
  • Danach kommt die Typisierung zum Einsatz, bei der „ Objekt Der Typ „Typ“ wird typisiert und hat den Namen „ Kind “.
  • Diese Typumwandlung verstößt gegen die Regel, dass die übergeordnete Klasse nicht in ihre untergeordnete Klasse typisiert werden darf. Deshalb entsteht die Ausnahme, weil die „ Objekt „Typ ist eine übergeordnete Klasse.
  • Am Ende ist das „ fangen Es wird ein Block verwendet, der „ Ausnahme ” als Parameter und gibt eine Meldung auf der Konsole aus.

Nach Ende der Ausführungsphase:



Der obige Schnappschuss zeigt das Auftreten von ClassCastException in Java.

Wie löse ich ClassCastException in Java?

Es werden drei mögliche Lösungen verwendet, die der Entwickler leicht lösen oder die Chance vermeiden kann, die „ ClassCastException ” in Java.

Diese Lösungen werden im Folgenden separat beschrieben:

Lösung 1: Verwendung des „instanceof“-Operators

Der ' Instanz von Der Operator überprüft, ob „ Objekt „ist eine Instanz des gewünschten Typs oder nicht. Diese Überprüfung trägt dazu bei, das Auftreten von „ ClassCastException “. Besuchen Sie zum Beispiel den folgenden Codeblock:

öffentlich Klasse TypeCheckingLinuxHint {
öffentlich statisch Leere hauptsächlich ( Zeichenfolge [ ] args ) {

Objekt Elternteil = „LinuxHint-Familie“ ;
Wenn ( Elternteil Instanz von Zeichenfolge ) {
Zeichenfolge Kind = ( Zeichenfolge ) Elternteil ;
System . aus . println ( „Nach der Typumwandlung String:“ + Kind ) ;
} anders {
System . aus . println ( „Objekt ist eine Instanz des gewünschten Typs String.“ ) ;
}
}
}

Erklärung des obigen Codes:

  • Zuerst die ' Elternteil „Es wird ein Objekt erstellt, das mit einem Dummy-Wert innerhalb des „“ initialisiert wird. versuchen ' Block.
  • Dann verwenden Sie die 'Wenn' Aussage, in der „ Instanz von Der Operator „wird verwendet, um die Instanz von „ zu überprüfen. Elternteil „Objekt mit Wunsch“ Zeichenfolge ' Typ.
  • Als nächstes, wenn die Bedingung „ WAHR „Die Typumwandlung wird durchgeführt und auf der Konsole angezeigt.
  • Andernfalls wird die benutzerdefinierte Fehlermeldung auf der Konsole angezeigt.

Nach Ende der Ausführungsphase:

Der Schnappschuss zeigt, dass die Typumwandlung erfolgreich durchgeführt wurde und ClassCastException mit dem „ Instanz von ' Operator.

Lösung 2: Überprüfen und korrigieren Sie den Typumsetzungsvorgang

Eine andere Lösung besteht darin, den Code mehrmals zu überprüfen und die kompatiblen Typen für die Typumwandlung zu überprüfen. Besuchen Sie zum Beispiel den folgenden Code, in dem „ ClassCastException „wird aufgrund eines inkompatiblen gewünschten Typs für die Typumwandlung verhaftet:

öffentlich Klasse TypeCheckLinuxHint {
öffentlich statisch Leere hauptsächlich ( Zeichenfolge [ ] args ) {
Objekt Elternteil = „LinuxHint-Familie“ ;
Ganze Zahl konvertierte Zahl = ( Ganze Zahl ) Elternteil ;
System . aus . println ( „Nummer nach Typumwandlung:“ + konvertierte Zahl ) ;
}
}

Im obigen Code hat der Programmierer fälschlicherweise das „ Zeichenfolge ' Zu ' Ganze Zahl “.

Nach Abschluss der Kompilierungsphase:

Der obige Schnappschuss zeigt das Auftreten von ClassCastException.

Lösung 3: Verwendung von Generika

Die Programmierer können „ Generika ”, um die erwarteten Typen anzugeben und die Typsicherheit zur Kompilierungszeit durchzusetzen.

Besuchen Sie zum Beispiel den folgenden Code:

importieren java.util.ArrayList ;
importieren java.util.List ;

öffentlich Klasse Verwendung von Generika {
öffentlich statisch Leere hauptsächlich ( Zeichenfolge [ ] args ) {
Aufführen < Zeichenfolge > empName = neu Anordnungsliste <> ( ) ;
empName. hinzufügen ( „Harry“ ) ;
empName. hinzufügen ( 'Töpfer' ) ;

Zeichenfolge Initial = empName. erhalten ( 0 ) ;
Zeichenfolge Finale = empName. erhalten ( 1 ) ;

System . aus . println ( 'Vorname: ' + Initial ) ;
System . aus . println ( 'Zweitname: ' + Finale ) ;
}
}

Erklärung des obigen Codes:

  • Zunächst werden die erforderlichen Dienstprogramme in die Java-Datei importiert und eine Klasse von „ Verwendung von Generika “ wird erklärt.
  • Als nächstes wird das „ Anordnungsliste „vom Typ“ Zeichenfolge ” wird mit dem Namen „ deklariert empName ” und durch Bereitstellung von zwei Dummy-Datenelementen initialisiert.
  • Erstellen Sie dann zwei Variablen vom Typ String mit dem Namen „ Initial ' Und ' Finale “. Weisen Sie anschließend Werte zu, indem Sie auf die Indexnummern zugreifen.
  • Zeigen Sie am Ende beide Variablen an, um das Ergebnis zu sehen.

Nach Abschluss der Ausführung sieht die Ausgabe so aus:

Der obige Schnappschuss zeigt, dass die Typumwandlung mithilfe von Generika durchgeführt wurde.

Abschluss

Um das „ ClassCastException „In Java muss der Programmierer die richtige Typkompatibilität sicherstellen, die Verwendung von „ Generika ' und das ' Instanz von ' Operator. Um die Ausnahme zu beheben, muss der Programmierer den Umwandlungsvorgang überprüfen und korrigieren, indem er die richtige Typkompatibilität gewährleistet. Darüber hinaus ist dies „ ClassCastException ” kann vermieden werden, indem man „ Generika “ und mit der Verwendung eines „ Instanz von ' Operator. In diesem Handbuch wurde die Methode zum Auflösen der ClassCastException in Java demonstriert.