Yükleniyor...

Java'da Records

record ile kompakt bir veri tipi bildirin ve bileşenlerini okuyun. Card.java içinde package-private record Tag(String name) {}, public sınıf Card kalsın; Tag t = new Tag("oak"); oluşturup t.name() yazdırın. javac Card.java derleyin, java Card çalıştırın. Ekran oak göstermelidir. İkinci demo bir int bileşeni ekler; ekran oak, sonra 3 gösterir. İsteğe bağlı JUnit'i sonraki sayfaya bırakın. Bu ders accessor'lı bir record'dur; Streams hattı değildir ve Lambda forEach turu değildir.

Bir bileşen, bir accessor

Card.java dosyasını açın. Public sınıf adı Card kalsın. Records hikâyesini gömüyorsa kalan Pipe streams demolarını, kalan Cue lambda yazdırmalarını, kalan Bin generics listelerini ve kalan Box Scanner istemlerini silin. Program yazı beklememeli ve stream hattı başlatmamalıdır.
Public sınıfın üstünde record'u bildirin:
record Tag(String name) {}
Card.main içinde bir örnek oluşturup accessor'ı yazdırın:
Tag t = new Tag("oak");
System.out.println(t.name());
Record başlığı bileşenleri parantez içinde listeler. Java bu bileşen için kurucuyu ve name() accessor'ını üretir. Ekran oak gösterir.

Card record Tag prints oak

java
record Tag(String name) {}

public class Card {
    public static void main(String[] args) {
        Tag t = new Tag("oak");
        System.out.println(t.name());
    }
}

Card.java dosyasının bulunduğu klasörde javac Card.java çalıştırın. Süslü ve normal parantezler uyduğunda javac kendi başına satır yazmaz. Sonra java Card çalıştırın — java Card.java veya java Tag değil. Çalıştırma adı Card ile eşleşsin diye tek public sınıf kalsın. Tag record'u aynı dosyada package-private kalır.
Çalıştırmayı bir kez izleyin. Java Card.main ile başlar. new Tag("oak") bileşeni saklar. t.name() "oak" döndürür. println oak yazar. Hiçbir yerde stream() çağrılmaz. Hiçbir yerde forEach çağrılmaz. Hiçbir yerde args[0] okunmaz.
Ekrana bakarken başlangıç kuralını söyleyin: record tipi ve bileşenlerini adlandırır; accessor bileşen adıyla eşleşir; new ile oluşturun. Bu sayfada JUnit demoları icat etmeyin. JUnit sonraki isteğe bağlı derste bekler. Record'u uzun el yazımı getter'lı sınıfla öğretim dosyasında değiştirmeyin — record başlığını koruyun.
Hâlâ kalan bir Pipe streams dosyasından OAK sonra PINE görüyorsanız Card'a geçin ve t.name() satırını koruyun. javac iki public tipten şikâyet ediyorsa yalnızca Card public kalsın; record Tag public olmasın.

İki bileşen, iki yazdırma

Aynı public sınıf Card kalsın. Record'u iki bileşene genişletin:
record Tag(String name, int n) {}
Tag t = new Tag("oak", 3);
System.out.println(t.name());
System.out.println(t.n());
Yeniden javac Card.java derleyin ve java Card çalıştırın. Ekran oak, sonra 3 gösterir. Her bileşenin aynı adlı bir accessor'ı vardır. Başlıktaki sıra kurucu argümanlarıyla eşleşir.

Card record Tag prints oak then 3

java
record Tag(String name, int n) {}

public class Card {
    public static void main(String[] args) {
        Tag t = new Tag("oak", 3);
        System.out.println(t.name());
        System.out.println(t.n());
    }
}

Çalıştırmayı bir kez izleyin. name() "oak" döndürür. n() 3 döndürür. İki demoyu iki öğretim şekli olarak tutun. Önce tek bileşeni kanıtlayın. Sonra iki bileşeni. Her iki şekil public Card yanında package-private record paylaşır.
Kurucu argümanlarını yer değiştirirseniz değerler yanlış bileşenlere gider. Tuttuğunuz öğretim dosyasında "oak" birinci, 3 ikinci kalsın.

Record alışkanlıkları

Alıştırırken kompakt başlığı ve accessor'ları birlikte tutun.

📊 Card için record alışkanlıkları

Alışkanlık Biçim Başlangıç kontrolü
Bildirim record Tag(String name) {} bileşenler başlıkta
Oluşturma new Tag("oak") argümanlar bileşen sırasıyla
Okuma t.name() accessor adı bileşenle eşleşir
İki alan record Tag(String name, int n) {} her bileşenin accessor'ı var
Public sınıf public class Card java Card ile çalıştır, java Tag ile değil

Records, Streams değil ve JUnit değil

Streams listedeki değerleri bir hatta süzüp dönüştürdü. Records sabit bileşen kümesini kompakt bir tipte tutar. JUnit davranışı daha sonraki isteğe bağlı bir sayfada testlerle kontrol eder. Bu üç işi bugün tek başlangıç dosyasında karıştırmayın.
Buradaki oak, name() ile dönen bir record bileşen değeridir. Stream filter sonucu değildir ve tek başına Lambda forEach ziyareti değildir. Kalan bir Pipe dosyası hâlâ büyük harfli eşlenmiş kelimeler yazdırıyorsa bunu geçmiş sayın ve Card'ın t.name() satırını koruyun.
record anahtar sözcüğü olmadan bu sayfanın kompakt başlığı gider. Kurucu argümanları uyuşmazsa javac çağrıyı reddeder. Her demoda başlığı ve new satırını hizalı tutun. O isteğe bağlı yolda test başlığı görmüş olsanız bile JUnit ek açıklamalarını bu sayfadan uzak tutun. Ekranın her dikkatli okumada name() ve n() ile bağlı kalması için kısa record şeklini tercih edin.

JUnit öncesi klasör kontrolleri

Başarılı derlemeden sonra klasörü listeleyin. Card.java ile Card.class birlikte görünmeli; record için çoğu zaman Tag.class da vardır. Kaynağı düzenleyin, kaydedin, javac Card.java, sonra java Card çalıştırın. n ekledikten sonra derlemeyi atlamak eski tek satırlık ekranı gösterebilir.
javac yinelenen public sınıflardan şikâyet ediyorsa yalnızca Card public kalsın. Ekran oak yerine Tag[oak] gösteriyorsa tüm record'u yazdırdınız — öğretimde t.name() kalsın. Hiçbir şey yazmıyorsa main hâlâ println çağırıyor mu kontrol edin.
Card'a Pipe stream().map yapıştırmayın. Record hikâyesinin yerine Cue forEach yapıştırmayın. İsteğe bağlı records işi accessor'lı kompakt tiptir.

İsteğe bağlı JUnit öncesi

record Tag(String name) {} tutabilir, new Tag("oak") oluşturup t.name() ile oak yazdırabilir; sonra record Tag(String name, int n) {} ile oak ve 3 yazdırabilirsiniz. javac Card.java derleyin, java Card çalıştırın. Tablo bildirim, oluşturma ve okumayı ayırır. Sonraki isteğe bağlı sayfa JUnit'tir.
Net bir records çifti için Card demolarını koruyun. Records çalışırken Pipe streams dosyalarını bu sayfadan uzak tutun. Records çalışırken Cue lambda dosyalarını bu sayfadan uzak tutun. JUnit işini o derse kadar bu sayfadan uzak tutun. Bu alışkanlıklar devam etmeden önceki kontrol noktasıdır. Tek alanlı ekran oak veya iki alanlı ekran oak sonra 3 gösterdiğinde Records bu dersin işini yapmıştır ve isteğe bağlı yola devam edecekseniz JUnit'e hazırsınız.
Klasörde son tur: bir public Card, package-private record Tag, eşleşen kurucu argümanları, accessor yazdırmaları, Scanner beklemesi yok, zorunlu stream hattı yok. Açık tuttuğunuz demoda bir kez daha javac Card.java ve java Card çalıştırın. Ekran hâlâ oak veya oak sonra 3 gösteriyorsa Records şekli sağlamdır ve kurs sonraki sayfada isteğe bağlı JUnit'e geçebilir. Her okumada tek net record alışkanlığı tercih edin; böylece her tur aynı haritayı öğretir.

🧠 Bilginizi Test Edin

Başlamaya Hazır

Bilginizi Test Edin

Bu interaktif sınavla kendini test et ve konuyu ne kadar iyi anladığını gör

❓
5
Sorular
🎯
70%
Geçmek İçin
♾️
∞
Süre
🔄
∞
Deneme

📝 Talimatlar

  • Her soruyu dikkatle okuyun
  • Her soru için en iyi cevabı seçin
  • Quiz'i istediğiniz kadar tekrar alabilirsiniz
  • İlerlemeniz üstte gösterilecek