4.11.3 | Zuweisungskompatibilität |
Damit zwei Variablen mit Verweistypen einander zugewiesen werden können, müssen die Verweistypen kompatibel sein. Zuweisungen sind nur zulässig, wenn bereits beim Kompilieren eindeutig festgestellt werden kann, dass die beiden Verweistypen kompatibel sind. In Fällen, in denen es die Anwendungssituation erforderlich macht, dass die Entscheidung auf Zuweisungskompatibilität erst zur Laufzeit erfolgt, ist ein so genanntes Cast-Konstrukt erforderlich. Cast-Konstrukte werden im nächsten Abschnitt behandelt.
Nachfolgend sind die Bedingungen aufgelistet, unter denen die Zuweisunga = b;zulässig ist, wenn a und b Verweistypen sind. Alle nicht genannten Fälle weist der Compiler als Fehler zurück.
Wenn a von einem Verweistyp auf eine Klasse ist, ist die Zuweisung erlaubt, wenn
- b entweder auf dieselbe Klasse wie a oder auf eine Unterklasse von a verweist oder
- b ein Array und a vom Typ Object ist.
Wenn a auf ein Interface verweist, ist die Zuweisung zulässig, wenn
- b eine Klasse ist, die das Interface a oder ein davon abgeleitetes Interface implementiert.
Unter der Annahme, dass a auf ein Array mit dem Komponententyp T1 und b auf ein Array mit dem Komponententyp T2 verweist, ist die Zuweisung zulässig, wenn
- T1 und T2 dieselben einfachen Datentypen sind oder
- T1 und T2 Verweistypen sind, wobei T2 an T1 zugewiesen werden kann. So könnte man einem Array mit dem Elementtyp Object ein Array mit dem Elementtyp Integer zuweisen.