Plik java instanceof
Operator służy do testowania, czy obiekt jest instancją określonego typu (klasa, podklasa lub interfejs).
Instancja w Javie jest również nazywana typem, comparison operator
ponieważ porównuje instancję z typem. Zwraca albo true
lub false
. Jeśli zastosujemy instanceof
operator do dowolnej zmiennej, która ma null
wartość, zwracafalse
.
Z JDK 14+, który zawiera JEP 305 , możemy również wykonać „Pattern Matching” dlainstanceof
Wzorce zasadniczo sprawdzają, czy wartość ma określony typ, i mogą wyodrębniać informacje z wartości, gdy ma ona pasujący typ. Dopasowanie wzorców pozwala na bardziej przejrzyste i wydajniejsze wyrażenie wspólnej logiki w systemie, a mianowicie warunkowe usuwanie komponentów z obiektów.
Przed wersją Java 14
if (obj instanceof String) {
String str = (String) obj; // need to declare and cast again the object
.. str.contains(..) ..
}else{
str = ....
}
Ulepszenia Java 14
if (!(obj instanceof String str)) {
.. str.contains(..) .. // no need to declare str object again with casting
} else {
.. str....
}
Możemy również łączyć ze sobą kontrolę typu i inne warunki
if (obj instanceof String str && str.length() > 4) {.. str.contains(..) ..}
Użycie dopasowania wzorców w programie instanceof
powinno zmniejszyć całkowitą liczbę rzutów jawnych w programach Java.
PS : instanceOf
będzie pasować tylko wtedy, gdy obiekt nie jest pusty, wtedy tylko można go przypisać str
.