Mit dem Java- instanceofOperator 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 operatorda sie die Instanz mit dem Typ vergleicht. Es gibt entweder trueoder zurück false. Wenn wir den instanceofOperator mit einer Variablen anwenden, die einen nullWert 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 instanceofsollte die Gesamtzahl der expliziten Casts in Java-Programmen reduzieren.
PS : instanceOfstimmt nur überein, wenn das Objekt nicht null ist, dann kann nur es zugewiesen werden str.