instanceof için Örüntü Eşleme
Türü sınarken bir değişkene bağlayın
instanceof için Örüntü Eşleme, CoddyKit'te ücretsiz bir Java Academy dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Java Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Java Academy kursu toplamda 4 dersten oluşur.
instanceof İçin Örüntü Eşleştirme
instanceof kullanmanın eski yolu, önce denetleyip sonra tür dönüştürmekti. Örüntü eşleştirme, denetimi ve tür dönüştürmeyi tek adımda birleştirir ve denetim başarılı olduğunda türü belirli bir değişken bağlar.
Eski Tekrarlayan Kod
Klasik kod türü denetler, ardından yeni bir değişkene tür dönüştürür. Bu yaklaşım tekrarlıdır ve hata yapmayı kolaylaştırır.
public class Main {
public static void main(String[] args) {
Object obj = "hello";
if (obj instanceof String) {
String s = (String) obj;
System.out.println(s.length());
}
}
}Yeni Biçim
Tür örüntüsü, değişkeni satır içinde bildirir: if (obj instanceof String s). Sonuç doğru olduğunda s zaten türü dönüştürülmüş değerdir.
public class Main {
public static void main(String[] args) {
Object obj = "hello";
if (obj instanceof String s) {
System.out.println(s.length());
}
}
}Bağlanan Değişken
s değişkenine örüntü değişkeni denir. Derleyicinin örüntünün eşleştiğini kanıtlayabildiği her yerde kapsam içindedir; bu da kodu hem daha kısa hem de daha güvenli yapar.
Koşullarda Kullanma
Aynı if koşulu içinde && sonrasında örüntü değişkenini kullanabilirsiniz; çünkü o dalda eşleşmenin gerçekleştiği garanti edilir.
public class Main {
public static void main(String[] args) {
Object obj = "developer";
if (obj instanceof String s && s.length() > 5) {
System.out.println("Long string: " + s);
}
}
}Olumsuzlama ve Akış Kapsamı
Olumsuzlamada kapsam akıllıca değişir. if (!(obj instanceof String s)) return; ifadesinden sonra s değişkeni yöntemin geri kalanında kapsam içindedir; çünkü kod yalnızca eşleşme gerçekleştiğinde devam eder.
public class Main {
static int safeLength(Object obj) {
if (!(obj instanceof String s)) {
return -1;
}
return s.length();
}
public static void main(String[] args) {
System.out.println(safeLength("abc"));
System.out.println(safeLength(42));
}
}equals ve Tür Dönüşümünün Yerine
Ders kitabı niteliğinde bir kullanım, temiz bir equals geçersiz kılma işlemidir: türü denetleyip tek satırda bağlayın, ardından alanları karşılaştırın.
public class Main {
static final class Point {
final int x, y;
Point(int x, int y) { this.x = x; this.y = y; }
public boolean equals(Object o) {
return o instanceof Point p && p.x == x && p.y == y;
}
public int hashCode() { return x * 31 + y; }
}
public static void main(String[] args) {
System.out.println(new Point(1, 2).equals(new Point(1, 2)));
System.out.println(new Point(1, 2).equals(new Point(3, 4)));
}
}Karışık Türleri İşleme
Kalıplı else if dallarını zincirlemek, birkaç olası tür arasında temiz bir şekilde yönlendirme yapmanızı sağlar.
public class Main {
static String describe(Object obj) {
if (obj instanceof Integer i) {
return "int " + (i * 2);
} else if (obj instanceof String s) {
return "string of length " + s.length();
} else {
return "unknown";
}
}
public static void main(String[] args) {
System.out.println(describe(21));
System.out.println(describe("hello"));
System.out.println(describe(3.14));
}
}Boş Değerle Eşleşme Olmaz
Bir instanceof kalıbı, klasik işleçte olduğu gibi boş değer için yanlıştır. Bu nedenle kalıp değişkenine hiçbir zaman boş değer bağlanmaz ve yaygın bir NullPointerException kaynağı ortadan kalkar.
public class Main {
public static void main(String[] args) {
Object obj = null;
if (obj instanceof String s) {
System.out.println("matched: " + s);
} else {
System.out.println("null or not a String");
}
}
}Daha Temiz ve Güvenli Kod
Kalıp eşleme, gereksiz tür dönüşümünü ortadan kaldırır, değişkeni yanlış kullanamayacağınız şekilde kapsamı daraltır ve neredeyse İngilizce gibi okunur. Modern Java'da tercih edilen biçim budur.
Hepsini Bir Araya Getirme
Kalıpları kullanarak farklı girdileri biçimlendiren küçük bir yönlendirici.
public class Main {
static String format(Object o) {
if (o instanceof Double d) return String.format("%.1f", d);
if (o instanceof Integer i) return Integer.toString(i);
if (o instanceof String s && !s.isBlank()) return s.trim();
return "n/a";
}
public static void main(String[] args) {
System.out.println(format(3.14159));
System.out.println(format(99));
System.out.println(format(" spaced "));
System.out.println(format(null));
}
}Kısa Sınama
instanceof kalıplarını anlayıp anlamadığınızı sınayın.
Özet
instanceof için kalıp eşlemeyi öğrendiniz.
- Tür denetimini ve tür dönüşümünü tek bir ifadede birleştirir.
- Kalıp değişkeninin kapsamı, eşleşmenin kanıtlandığı bölgeyle sınırlıdır.
- Kalıplar boş değer için yanlıştır; böylece NullPointerException hataları önlenir.
- equals geçersiz kılmalarını ve tür yönlendirmesini basitleştirir.
Sıkça Sorulan Sorular
“instanceof için Örüntü Eşleme” dersi ücretsiz mi?
Evet — “instanceof için Örüntü Eşleme” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Java Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Java Academy kursu toplamda 4 dersten oluşur.
“instanceof için Örüntü Eşleme” dersinde ne öğreneceğim?
Türü sınarken bir değişkene bağlayın Java Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Java Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Java Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.
“instanceof için Örüntü Eşleme” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Java Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Java Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- instanceof için Örüntü Eşleme
- Record Örüntüleri
- İç İçe Record Örüntüleri
- switch İçinde Örüntüler