Typ eines Objektes ermitteln
Das Beispiel weist insgesamt vier Klassen auf. Von diesen
enthält InstanceofClass
die main-Methode und wird
ausgeführt. Die Klasse Person
dient als
Superklasse, von der Vater
und von dieser wiederum Kind
abgeleitet wurden.
In main()
wird zunächst ein Objekt vom Typ Kind
gebildet und dies in der Variablen kind
gespeichert.
Dann wird eine Variable vom Typ Person
erzeugt, diese
aber mit null
initialisiert.
Darauf folgen einige
Objekt-Überprügungen mit instanceof
und
entsprechende Ausgaben.
public class InstanceofClass { public static void main(String[] args) { Kind kind = new Kind(); Person person = null; System.out.println("kind ist vom Typ Kind: " + (kind instanceof Kind)); System.out.println("person ist vom Typ Person: " + (person instanceof Person)); System.out.println("kind ist vom Typ Vater: " + (kind instanceof Vater)); System.out.println("kind ist vom Typ Person: " + (kind instanceof Person)); System.out.println("person ist vom Typ Kind: " + (person instanceof Kind)); } } class Person { } class Vater extends Person { } class Kind extends Vater { }
Die Ausgabe sieht wie folgt aus:
kind ist vom Typ Kind: true person ist vom Typ Person: false kind ist vom Typ Vater: true kind ist vom Typ Person: true person ist vom Typ Kind: false
Der Operator erwartet zwei Operanden: Links steht das zu
überprüfende Objekt rechts der Bezeichner der Klasse, auf
die hin das Objekt geprüft werden soll.
Das Ergebnis der
ersten Zeile verwundert nicht: Selbstverständlich ist das
Objekt kind
auch vom Typ Kind
, da es aus
diesem gebildet wurde. In der zweiten Zeile wird
überprüft, ob auch das Objekt person
vom Typ
Person
ist. Hier wird jedoch false
ausgegeben, da das Objekt mit null
initialisiert wurde,
das Objekt selbst also eigentlich nicht existiert.
Die dritte
Zeile erzeugt die Ausgabe true
, da das Objekt kind
vom Typ Kind
von Vater abgeleitet wurde und somit die
Eigenschaftsmenge dieser Klasse mit beinhaltet.
Auch die vierte
Zeile erzeugt true
, da kind
durch die
Ableitung von Vater
auch eine Spezifizierung von Person
ist. Wie die nächste Zeile zeigt ist dies aus zweierlei
Gründen jedoch umgekehrt nicht der Fall:
person
wurde mitnull
initialisiertperson
ist keine Ableitung vonKind
. Zwar ist jedeskind
einePerson
, aber nicht jedeperson
, ist auch einKind
, sondern könnte z.B. auch einVater
sein.
Wenn Ihnen javabeginners.de gefällt, freue ich mich über eine Spende an diese gemeinnützigen Organisationen.