Klassen sind Typen von Daten. Casts werden verwendet, um Objekte für Arrays, Listen und Sammlungen abgerufen identifizieren. Casts können auch wandeln Daten von einem Typ in einen anderen . Klasse Besetzung Ausnahmen oder ClassCastException Fehler werden durch Java Virtual Machine ( JVM) erzeugt wird, wenn Sie versuchen, inkompatible Datentypen konvertieren. Klassen und Casts
Java, wirft den Typ des Objekts , wenn es nicht anders erkannt werden. Klasse Typen umgewandelt werden können Interface-Typen , wenn die Klasse die Schnittstelle verwendet . Casts wandeln ein Interface-Typ in eine Klasse -Typ. Methoden in Java Funktionen ausführen oder Berechnungen . Methoden können Daten aus verschiedenen Arten Klasse ziehen . Wenn der Java-Methode , um die Daten von einer Klasse in eine andere umwandeln mit Abgüssen versucht , Fehler geworfen werden .
Verursacht
Fehler können entstehen, wenn Daten Konvertierungen und Berechnungen ändern Daten , inkompatible Datentypen. Wenn ein Verweis auf eines inkompatiblen Datentyp oder ungültigen Datentyp umgewandelt wird, wird ein ClassCastException von Java generiert. ClassCastException tritt auch auf , wenn ein Objekt anhand einer Unterklasse für die es keine Instanz umgewandelt wird. " SCJP Sun Certified Programmer for Java Platform ", sagt "eine Menge von den Methoden in der Java API Rückkehr Objekt -Typen, die in die entsprechenden untergeordneten Klasse Typ umgewandelt werden müssen. " Ändern der Klasse von Daten, wenn durch das Verfahren verarbeitet werden können auch dazu führen, ClassCastException Fehler .
inkompatible Typen
Termine und Zahlen sind inkompatible Datentypen . Charaktere und numerischen Datentypen sind nicht kompatibel. Boolesche Typen sind nicht mit Zahlen . Covariant Return-Typen sind nicht kompatibel mit primitiven Typen . Streicher und Objekt-Referenzen sind inkompatible Typen . Gleitkomma- Daten können auf ganze Zahlen umgewandelt werden , und die Werte werden als Ergebnis abgeschnitten. Abgeschnittene Werte können inkompatibel sein in späteren Verfahren Berechnungen. Integer und Strings sind inkompatible Datentypen .
Vermeidung von Fehlern
sicher, dass Variablen mit dem gleichen Verfahren Aktie den gleichen Datentyp manipuliert . Werfen Sie die Klasse in ein Ziel -Typ mit einer größeren Reichweite als Quell-Typ , um das Abschneiden zu verhindern. ClassCastException Fehler sind vermeidbar , indem Wahr-Falsch- Schecks. In "if" -Anweisungen , um zu überprüfen , ob die Daten -Typen kompatibel zu ClassCastException Fehler und Ausnahmebehandlung Anweisungen, was zu tun ist, wenn ein Datentyp ist inkompatibel zu verhindern. Verwenden Ausnahmebehandlung Logik innerhalb der Methode für die Klasse Besetzung Ausnahmen Fehlermeldungen zu verhindern. Instanceof Aussagen verhindern falsche Gießen . Laut " Sun Certified Programmer SCJP für Java Platform ", " verwenden Sie den Operator instanceof classcast - Ausnahme zu vermeiden, wenn Sie unsicher über die tatsächliche Datentyp einer Referenz, Gießen braucht sind " "Data Structures : Abstraktion und Design mit Java " . " der Vorteil von Generika (array Listen ) ist, dass der Compiler sicher, dass alle Operationen mit Objekten von einem generischen ArrayList referenziert "sicher" sind und wird nicht dazu führen Ausnahmen während der Laufzeit. "