Record
- Java kursu
- Orta seviye
- Ders 28/116
- 5 dk
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
// Point record tanımla
// x ve y bileşenleri ekle
// main içinde örnekle ve yazdırÖrnek çözüm
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
record Point(int x, int y) { }
Point p = new Point(3, 4);
int val = p.____;
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.