Ist das Folgende OK?
Object obj; String str = "Yertle" ; obj = str; ( (KinderGeburtstag)obj ).gruss();
Nein.
instanceof
-Operator
Eine Typumwandlung wird verwendet, um dem Compiler mitzuteilen was "wirklich" in einer Variablen ist, die selbst nicht spezifisch genug ist.
In einem komplizierten Programm könnte eine Referenzvariable als irgendeines von mehreren verschiedenen Objekten enden,
je nach Inputdaten oder anderen unvorhersehbaren Gegebenheiten.
Um damit umzugehen, wird der instanceof
-Operator verwendet.
variable instanceof Klasse
Dieser Operator ergibt true
oder false
,
je nach dem ob die Variable auf ein Objekt vom
Typ Klasse
verweist.
In dem folgenden Fragment wird zum Beispiel
instanceof
verwendet, um sicher zu stellen, dass das
von obj
referenzierte Objekt korrekt verwendet wird:
Object obj; KinderGeburtstag kinder = new KinderGeburtstag ( "Ian", 4 ); String str = "Yertle" ; obj = kinder; if ( obj instanceof KinderGeburtstag ) ( (KinderGeburtstag)obj ).gruss(); if ( obj instanceof String ) System.out.print( (String)obj );
instanceof
wird auch dann true
zurückgeben,
wenn die links stehende Klasse eine Kindklasse
(oder Enkel- oder Urenkelklasse oder ...)
von der rechts stehenden Klasse ist.
Wird uns instanceof
helfen, wenn wir nicht im voraus wissen welche Klassen eine Variable enthalten könnte?