Java instanceof
işleci, nesnenin belirtilen türde (sınıf veya alt sınıf veya arabirim) bir örneği olup olmadığını sınamak için kullanılır.
comparison operator
Java'daki instanceof, örneği türle karşılaştırdığı için tür olarak da bilinir . Ya true
da döner false
. instanceof
İşleci null
değeri olan herhangi bir değişkenle uygularsak,false
.
JEP 305 içeren JDK 14+ sürümünden ayrıca "Pattern Matching"instanceof
Desenler temel olarak bir değerin belirli bir türe sahip olduğunu test eder ve eşleşen tipe sahip olduğunda değerden bilgi çıkarabilir. Örüntü eşleme, bir sistemdeki ortak mantığın, bileşenlerin nesnelerden koşullu olarak kaldırılması konusunda daha açık ve etkili bir şekilde ifade edilmesini sağlar.
Java öncesi 14
if (obj instanceof String) {
String str = (String) obj; // need to declare and cast again the object
.. str.contains(..) ..
}else{
str = ....
}
Java 14 geliştirmeleri
if (!(obj instanceof String str)) {
.. str.contains(..) .. // no need to declare str object again with casting
} else {
.. str....
}
Ayrıca tip kontrolü ve diğer koşulları bir araya getirebiliriz
if (obj instanceof String str && str.length() > 4) {.. str.contains(..) ..}
Kalıp eşleşmesinin kullanılması, instanceof
Java programlarındaki genel açık döküm sayısını azaltmalıdır.
PS : instanceOf
yalnızca nesne boş olmadığında eşleşir, ancak yalnızca atanabilir str
.