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();
((Y)a).foo();
|
| |
|
Typüberprüfung zur Laufzeit:
|
|
|
|
X a = new X();
Y b;
b = (Y)a;
|
| |
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 )
... ( a instanceof X )
... ( a instanceof Z )
... ( a instanceof Q )
... ( a instanceof
Object )
... ( a instanceof I1 )
... ( a instanceof I0 )
... ( a instanceof I2 )
|
| |
|
Wiederholung: keine (Mehrweg-) Verzweigungen über instanceof
Typabfragen,
dies widerspricht dem OO Ansatz.
|
| |
Laufzeittypinformation |
über Klassenhierarchie und implementierte
Schnittstellen, Methoden und Datenkomponenten in der Klasse
Class
|