Umwandlungen von Referenztypen - 1

„Und jetzt eine kurze Lektion von Diego. Kurz und bündig. Über Umwandlungen von Referenztypen.“

„Beginnen wir mit Object-Variablen. Einer solchen Variablen kannst du einen beliebigen Referenztyp zuweisen (erweiternde Umwandlung). Um die Zuweisung jedoch in die andere Richtung (einschränkende Umwandlung) vornehmen zu können, musst du explizit eine cast-Operation angeben:“

Code Beschreibung
String s = "mom";
Object o = s; // o stores a String
Eine typische erweiternde Referenzumwandlung
Object o = "mom"; // o stores a String
String s2 = (String) o;
Eine typische einschränkende Referenzumwandlung
Integer i = 123; // o stores an Integer
Object o = i;
Erweiternde Umwandlung.
Object o = 123; // o stores an Integer
String s2 = (String) o;
Laufzeitfehler!
Du kannst eine Integer-Referenz nicht in eine String-Referenz umwandeln.
Object o = 123; // o stores an Integer
Float s2 = (Float) o;
Laufzeitfehler!
Du kannst eine Integer-Referenz nicht in eine Float-Referenz umwandeln.
Object o = 123f; // o stores a Float
Float s2 = (Float) o;
Umwandlung in den gleichen Typ. Eine einschränkende Referenzumwandlung.

Eine erweiternde oder einschränkende Referenzumwandlung verändert das Objekt in keiner Weise. Der einschränkende (oder erweiternde) Teil bezieht sich ausdrücklich auf die Tatsache, dass die Zuweisungsoperation die Typprüfung der Variablen und ihres neuen Wertes beinhaltet (nicht beinhaltet).“

„Das ist das seltene Beispiel, wo alles völlig klar ist.“

„Um die Fehler in diesen Beispielen zu vermeiden, haben wir eine Möglichkeit, herauszufinden, auf welchen Typ sich die Object-Variable bezieht:

Code
int i = 5;
float f = 444.23f;
String s = "17";
Object o = f;                       // o stores a Float

if (o instanceof  Integer)
{
    Integer i2 = (Integer) o;
}
else if (o instanceof  Float)
{
    Float f2 = (Float) o;            // This if block will be executed
}
else if (o instanceof  String)
{
    String s2 = (String) o;
}
3
Aufgabe
Java Syntax,  Level 10Lektion 6
Gesperrt
Code-Eingabe
Manchmal darf man gar nicht nachdenken, man muss es einfach raushauen! Auch wenn es sich paradox anhört, manchmal „erinnern“ sich deine Finger besser als dein bewusster Verstand. Deshalb wirst du es im Rahmen der Schulung im geheimen CodeGym-Zentrum manchmal mit Aufgaben zu tun bekommen, bei denen du Code eingeben musst. Wenn du Code eingibst, gewöhnst du dich an die Syntax und sammelst ein wenig dunkle Materie. Außerdem tust du etwas gegen deine Faulheit!

„Du musst diese Überprüfung vor jeder erweiternden Umwandlung durchführen, es sei denn, du bist dir des Objekttyps absolut sicher.“

„Alles klar.“