Weitere aktuelle Java-Titel finden Sie bei dpunkt.
 Inhaltsverzeichnis   Auf Ebene Zurück   Seite Zurück   Seite Vor   Auf Ebene Vor   Eine Ebene höher   Index


4.11.5

Der instanceof-Operator


Mit dem instanceof-Operator kann zur Laufzeit geprüft werden, ob ein von einem Verweis referenziertes Objekt zuweisungskompatibel zu einer Klasse ist, die im zweiten Operanden von instanceof angegeben wird. Der zweite Operand darf kein Verweis sein. instanceof hat die Syntax
   <Verweis oder Verweistyp> instanceof <Verweistyp>
instanceof liefert true, wenn instanceof liefert false, wenn Mit instanceof kann zum Beispiel zunächst festgestellt werden, ob zwei Objekte zuweisungskompatibel sind, bevor die eigentliche Zuweisung erfolgt.

Das folgende Beispiel zeigt den Anwendungsfall einer Zuweisung:
  Point p;

  // Zuweisung an p;

  if (p instanceof Square) 
     Square s = (Square)p;
Durch die if-Anweisung wird p nur dann an r zugewiesen, wenn der Wert von p zur Laufzeit ein Exemplar von Square ist. Falls p auf ein Exemplar einer beliebigen Unterklasse von Square verweist, ist das Ergebnis von instanceof natürlich auch true.

In der Standardbibliothek wird instanceof fast durchgänig in den Implementierungen der equals(Object)-Methode eingesetzt, um vor dem Vergleich der Datenelemente zu prüfen, ob das übergebene Objekt überhaupt zur gleichen Klasse gehört. Hat diese Prüfung Erfolg, kann das zu prüfende Objekt gefahrlos mit einem Cast umgewandelt und die Datenelemente verglichen werden. Der folgende Auszug stammt aus der Methode equals() von java.awt.Point:
  public boolean equals(Object obj) {
    if (obj instanceof Point) {
      Point pt = (Point)obj;
      return (x == pt.x) && (y == pt.y);
    }
    ...
  }

Ein weiterer häufiger Anwendungsfall ist die Prüfung, ob ein Flag-Interface implementiert ist.


 Inhaltsverzeichnis   Auf Ebene Zurück   Seite Zurück   Seite Vor   Auf Ebene Vor   Eine Ebene höher   Index

Copyright © 2002 dpunkt.Verlag, Heidelberg. Alle Rechte vorbehalten.