homedukeOOP mit Java: Laufzeit-Typüberprüfung und Konversionen Prof. Dr. Uwe Schmidt FH Wedel

Laufzeit-Typüberprüfung und Konversionen

weiter

weiter

Konversionen und Laufzeittypüberprüfung

Cast-Konstrukt
Zum Konvertieren eines Verweises von einer Klasse in eine Unterklasse oder in ein implementiertes Interface.
 
class X { ... }
 
class Y extends X {
  void foo() { ... }
}
 
X a = new Y();
 
a.foo();       // --> Compilerfehlermeldung
 
((Y)a).foo();  // --> o.k.
weiter
merke
Typüberprüfung zur Laufzeit:
merke
Ausnahme: ClassCastException
 
X a = new X();
Y b;
 
b = (Y)a;        // --> Ausnahme wird ausgelöst
weiter
instanceof
der instanceof-Operator für Laufzeittests, ob der Wert eines Verweises zuweisungskompatibel zu einer Klasse oder einer Schnittstelle ist.
 
...
interface I0 { ... }
interface I1 extends I0 { ... }
interface I2 { ... }
 
class X { ... }
 
class Y extends X
        implements I1 { ... }
 
class Z extends Y
        implements I2 { ... }
 
class Q extends X { ... }
 
X a = new Y();
 
... ( a instanceof Y  )  // --> true
... ( a instanceof X  )  // --> true
... ( a instanceof Z  )  // --> false
... ( a instanceof Q  )  // --> false
... ( a instanceof
              Object  )  // --> true
 
... ( a instanceof I1 )  // --> true
... ( a instanceof I0 )  // --> true
... ( a instanceof I2 )  // --> false
weiter
merke
Wiederholung: keine (Mehrweg-) Verzweigungen über instanceof Typabfragen,
dies widerspricht dem OO Ansatz.
weiter
Laufzeittypinformation
über Klassenhierarchie und implementierte Schnittstellen, Methoden und Datenkomponenten in der Klasse Class

Letzte Änderung: 14.02.2012
© Prof. Dr. Uwe Schmidt
Prof. Dr. Uwe Schmidt FH Wedel