Mit dem Java- instanceof
Operator wird getestet, ob das Objekt eine Instanz des angegebenen Typs ist (Klasse oder Unterklasse oder Schnittstelle).
Die Instanz von in Java wird auch als Typ bezeichnet, comparison operator
da sie die Instanz mit dem Typ vergleicht. Es gibt entweder true
oder zurück false
. Wenn wir den instanceof
Operator mit einer Variablen anwenden, die einen null
Wert hat, wird er zurückgegeben false
.
Ab JDK 14+, das JEP 305 enthält , können wir auch "Pattern Matching" für durchführeninstanceof
Muster testen grundsätzlich, ob ein Wert einen bestimmten Typ hat, und können Informationen aus dem Wert extrahieren, wenn er den passenden Typ hat. Der Mustervergleich ermöglicht einen klareren und effizienteren Ausdruck der allgemeinen Logik in einem System, nämlich das bedingte Entfernen von Komponenten aus Objekten.
Vor Java 14
if (obj instanceof String) {
String str = (String) obj; // need to declare and cast again the object
.. str.contains(..) ..
}else{
str = ....
}
Java 14-Verbesserungen
if (!(obj instanceof String str)) {
.. str.contains(..) .. // no need to declare str object again with casting
} else {
.. str....
}
Wir können auch die Typprüfung und andere Bedingungen miteinander kombinieren
if (obj instanceof String str && str.length() > 4) {.. str.contains(..) ..}
Die Verwendung von Pattern Matching in instanceof
sollte die Gesamtzahl der expliziten Casts in Java-Programmen reduzieren.
PS : instanceOf
stimmt nur überein, wenn das Objekt nicht null ist, dann kann nur es zugewiesen werden str
.