Record'larla Mühürlü Türler
Kapalı hiyerarşileri modelleyin
Record'larla Mühürlü Türler, CoddyKit'te ücretsiz bir Java Academy dersidir. Bu, 4 dersinin 3. 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.
Mühürlü Türler ve Kayıtlar
Mühürlü arayüzler ve kayıtlar mükemmel bir ikilidir. Mühürlü arayüz kapalı bir durum kümesi tanımlar; her kayıt, somut ve değişmez bir durumdur. Birlikte cebirsel veri türlerini modellerler.
Kayıtlar Örtük Olarak Sonlandırılmıştır
Bir kayıt otomatik olarak final olur; böylece izin verilen alt türlerin final, mühürlü veya mühürsüz olması gerektiği kuralını karşılar. Ek bir değiştirici gerekmez.
Kapalı Bir Şekil Hiyerarşisi
Şekilleri, mühürlü bir arayüzü uygulayan ve her biri kendi verisini taşıyan kayıtlar olarak modelleyin.
public class Main {
sealed interface Shape permits Circle, Rectangle {}
record Circle(double radius) implements Shape {}
record Rectangle(double width, double height) implements Shape {}
public static void main(String[] args) {
Shape s = new Rectangle(3, 4);
System.out.println(s);
}
}Davranış Ekleme
Mühürlü arayüz, her kaydın uyguladığı yöntemleri bildirebilir ve kapalı küme üzerinde çok biçimlilik sağlayabilir.
public class Main {
sealed interface Shape permits Circle, Rectangle {
double area();
}
record Circle(double radius) implements Shape {
public double area() { return Math.PI * radius * radius; }
}
record Rectangle(double width, double height) implements Shape {
public double area() { return width * height; }
}
public static void main(String[] args) {
Shape s = new Circle(2);
System.out.printf("Area: %.2f%n", s.area());
}
}Otomatik Eşitlik ve toString
Kayıtlar equals, hashCode ve toString yöntemlerini otomatik olarak oluşturur. Aynı bileşenlere sahip iki kayıt eşittir; bu, değer modelleme için idealdir.
public class Main {
sealed interface Shape permits Circle {}
record Circle(double radius) implements Shape {}
public static void main(String[] args) {
Circle a = new Circle(5);
Circle b = new Circle(5);
System.out.println(a.equals(b));
System.out.println(a);
}
}Sonuçları Modelleme
Yaygın bir örüntü, beklenen sonuçlar için boş değer döndürmenin veya özel durumların yerine başarı kaydı ve başarısızlık kaydı içeren mühürlü bir Result türü kullanmaktır.
public class Main {
sealed interface Result permits Ok, Err {}
record Ok(int value) implements Result {}
record Err(String message) implements Result {}
static Result parse(String s) {
try { return new Ok(Integer.parseInt(s)); }
catch (NumberFormatException e) { return new Err("bad number: " + s); }
}
public static void main(String[] args) {
System.out.println(parse("42"));
System.out.println(parse("oops"));
}
}Doğrulama İçin Kısa Oluşturucular
Kayıtlar, girdilerini kısa bir oluşturucuda doğrulayarak her durumun oluşturulduğu anda geçerli kalmasını sağlayabilir.
public class Main {
sealed interface Shape permits Circle {}
record Circle(double radius) implements Shape {
Circle {
if (radius < 0) throw new IllegalArgumentException("radius must be >= 0");
}
}
public static void main(String[] args) {
try { new Circle(-1); }
catch (IllegalArgumentException e) { System.out.println(e.getMessage()); }
}
}Özyinelemeli Veri Modelleri
Bir kayıt mühürlü arayüze başvurabildiği için ifade ağaçları veya bağlı listeler gibi özyinelemeli yapılar oluşturabilirsiniz.
public class Main {
sealed interface Expr permits Num, Add {}
record Num(int value) implements Expr {}
record Add(Expr left, Expr right) implements Expr {}
public static void main(String[] args) {
Expr e = new Add(new Num(1), new Add(new Num(2), new Num(3)));
System.out.println(e);
}
}Değişmezliğin Faydaları
Kayıtlar sığ düzeyde değişmezdir; bu nedenle kayıtlar üzerine kurulu mühürlü bir hiyerarşi hakkında akıl yürütmek kolaydır, paylaşımı güvenlidir ve eşzamanlı kullanıma uygundur. Kayıtların kendilerini savunmacı biçimde kopyalamak gerekmez.
Seçim Yapısıyla Birlikte Kullanım
Mühürlü kayıtlar, örüntü eşleştirmeli switch ile çok etkilidir: her durum bir kaydın bileşenlerine ayırabilir ve derleyici tüm durumların ele alındığını denetler. Bu konu örüntüler kursunda incelenir.
Model Üzerinde Hesaplama
Özyinelemeli kayıt ağacını dolaşan bir yöntem olarak yorumlayıcı yazabilirsiniz.
public class Main {
sealed interface Expr permits Num, Add {}
record Num(int value) implements Expr {}
record Add(Expr left, Expr right) implements Expr {}
static int eval(Expr e) {
if (e instanceof Num n) return n.value();
Add a = (Add) e;
return eval(a.left()) + eval(a.right());
}
public static void main(String[] args) {
Expr e = new Add(new Num(4), new Add(new Num(5), new Num(6)));
System.out.println(eval(e));
}
}Kısa Kontrol
Mühürlü kayıtlar konusundaki anlayışınızı sınayın.
Özet
Mühürlü türleri kayıtlarla birleştirmeyi öğrendiniz.
- Kayıtlar örtük olarak finaldir; bu nedenle izin verilen alt türler olarak kullanılabilirler.
- Mühürlü arayüz ortak yöntemler bildirebilir.
- Kayıtlar otomatik eşitlik, özetleme ve toString sağlar.
- Birlikte kapalı, değişmez ve gerekirse özyinelemeli verileri modellerler.
Sıkça Sorulan Sorular
“Record'larla Mühürlü Türler” dersi ücretsiz mi?
Evet — “Record'larla Mühürlü Türler” 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.
“Record'larla Mühürlü Türler” dersinde ne öğreneceğim?
Kapalı hiyerarşileri modelleyin 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 3. dersidir.
“Record'larla Mühürlü Türler” 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
- Mühürlü Türleri Tanımlama
- permits Yan Tümcesi
- Record'larla Mühürlü Türler
- Mühürlü Türlerde Eksiksiz switch