zur vorherigen Seite   zum Inhaltsverzeichnis   zur nächsten Seite

Ist das Folgende OK?

Object obj;
String str = "Yertle" ;
obj = str;
( (KinderGeburtstag)obj ).gruss();

Antwort:

Nein.

Der 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.

FRAGE 17:

Wird uns instanceof helfen, wenn wir nicht im voraus wissen welche Klassen eine Variable enthalten könnte?