Mit dem Operator
instanceof
können Sie herausfinden, aus welcher Klasse ein Objekt stammt. Dieser Operator hat zwei Argumente. Links steht ein Verweis auf das Objekt und rechts der Name des Typs, mit dem das Objekt auf Kompatibilität geprüft wird. Zum Beispiel:
Parent р = new Child(); // проверяем переменную р типа Parent
//на совместимость с типом Child print(p instanceof Child);
Das Ergebnis wird wahr sein . Somit instanceof
verlässt sich der Operator nicht auf den Typ der Referenz, sondern auf die Eigenschaften des Objekts, auf das er verweist. Dieser Operator gibt jedoch nicht nur einen wahren Wert für den Typ zurück, von dem das Objekt abgeleitet wurde. Fügen wir den bereits deklarierten Klassen noch eine weitere hinzu:
// Объявляем новый класс и наследуем
// его от класса Child
class ChildOfChild extends Child {}
Jetzt erstellen wir eine Variable eines neuen Typs:
Parent p = new ChildOfChild();
print(p instanceof Child);
Die erste Zeile deklariert eine Variable vom Typ Parent
, die mit einem Verweis auf ein von abgeleitetes Objekt initialisiert wird ChildOfChild
. In der zweiten Zeile analysiert die Anweisung instanceof
die Kompatibilität der Typreferenz Parent
mit der Klasse Child
und das beteiligte Objekt ist weder von der ersten noch von der zweiten Klasse abgeleitet. Der Operator gibt jedoch „true“ zurück , da die Klasse, von der dieses Objekt abgeleitet ist, von erbt Child
. Link zur Originalquelle: Operator-Instanz von
GO TO FULL VERSION