Hallo,
beim Casting kann ich ja einen Datentypen in einen anderen umwandeln. Zum Beispiel bei der bekannten Methode equals:
Hier wird ein Objekt eines allgemeineren Typs (hier Object) auf ein Objekt eines spezielleren Typen (hier MeineKlasse) gecastet.
Warum aber wirft dann der folgende Code-Schnipsel zur Laufzeit eine ClassCastException?:
Es ist doch genau dasselbe Prinzip: allgemeineres Objekt (hier a vom Typ A) wird gecastet auf spezielleres Objekt (hier b vom Typ B).
Warum also der Laufzeitfehler und im equals-Beispiel nicht?
beim Casting kann ich ja einen Datentypen in einen anderen umwandeln. Zum Beispiel bei der bekannten Methode equals:
Java:
public class MeineKlasse {
private boolean var = true;
public boolean equals(Object o) {
MeineKlasse mk = (MeineKlasse) o;
return mk.var == this.var;
}
}
Hier wird ein Objekt eines allgemeineren Typs (hier Object) auf ein Objekt eines spezielleren Typen (hier MeineKlasse) gecastet.
Warum aber wirft dann der folgende Code-Schnipsel zur Laufzeit eine ClassCastException?:
Java:
class A {}
class B extends A {}
public class MeineKlasse{
public static void main(String argv[]){
A a = new A();
B b = (B) a;
}
}
Es ist doch genau dasselbe Prinzip: allgemeineres Objekt (hier a vom Typ A) wird gecastet auf spezielleres Objekt (hier b vom Typ B).
Warum also der Laufzeitfehler und im equals-Beispiel nicht?