CodeBlanks Logo Icon CodeBlanks

Record

record ile değişmez veri sınıfını öğrenirsin.

Record

Java 16'dan itibaren record, değiştirilemez (immutable) veri taşıyıcıları tanımlamak için kullanılır. Bir record; alanları, yapıcısı, getter'ları, toString, equals ve hashCode metotlarını otomatik üretir. Kod tekrarını büyük ölçüde azaltır.

Örnek: record Point(int x, int y) { }. Bu tek satır, x ve y alanları, bir yapıcı, x() ve y() accessor'ları, toString, equals ve hashCode üretir. new Point(3, 4) ile örnek oluşturulur; p.x() ile x okunur. Record'lar değiştirilemez; alanlar oluşturulduktan sonra değiştirilemez. Bu, veri güvenliği için avantajlıdır.

Record accessor

Record'larda alan değerini okumak için get öneki kullanılmaz; doğrudan alan ismi parantezle çağrılır. x alanı için p.x(), y alanı için p.y(). Bu, klasik getter'lardan farklıdır.

Örnek: record Point(int x, int y) { } tanımından sonra Point p = new Point(3, 4); yazılır. p.x() üç döndürür, p.y() dört döndürür. getX() yazarsan derleme hatası alırsın; çünkü record accessor x() şeklindedir. Bu farklılık, record'ların daha söz dizimi sağlar. toString de otomatik gelir; System.out.println(p) Point[x=3, y=4] yazdırır.

Uygulama Point record tanımla

Point adında bir record tanımla; int x ve int y bileşenleri olsun. main metodunda new Point(3, 4) ile bir örnek oluştur. x() ve y() accessor'larını çağırarak değerleri ayrı satırlarda yazdır.

Başlangıç kodu

Main.java
// Point record tanımla
// x ve y bileşenleri ekle
// main içinde örnekle ve yazdır

Örnek çözüm

Main.java
record Point(int x, int y) { }
public class Main {
    public static void main(String[] args) {
        Point p = new Point(3, 4);
        System.out.println(p.x());
        System.out.println(p.y());
    }
}

Beklenen çıktı

3
4

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Record'ların alanları oluşturulduktan sonra değiştirilebilir mi?

  • Yalnızca aynı paketten
  • Hayır, değiştirilemez Doğru cevap
  • Evet, her zaman
  • Yalnızca alt sınıflardan

Açıklama: Record alanları değiştirilemez; immutable'dır.

2 Record bölümlerini eşle

Kavram Anlamı
record Anahtar kelime
Point Record ismi
int x, int y Bileşenler
p.x() Accessor

3 Record accessor çağrısını tamamla

Soru
record Point(int x, int y) { }
Point p = new Point(3, 4);
int val = p.____;
Cevap
record Point(int x, int y) { }
Point p = new Point(3, 4);
int val = p.x();

Açıklama: Record accessor alan ismiyle parantezle çağrılır.

Orta seviye bölümündeki tüm dersler