• Anasayfa
  • Eğitimler
    • JavaScript Eğitimi
    • Angular 2 Eğitimi
    • React.js Eğitimi
    • Java 8 Eğitimi
    • Java EE 7 Eğitimi
    • Spring Framework Eğitimi
    • Git Eğitimi
  • Online Eğitimler
    • Online React.js Eğitimi
    • Online Angular 2 Eğitimi
    • Online Spring Boot Eğitimi
  • Referanslar
  • Hakkında
  • İletişim
KodEduKodEdu
  • Anasayfa
  • Eğitimler
    • JavaScript Eğitimi
    • Angular 2 Eğitimi
    • React.js Eğitimi
    • Java 8 Eğitimi
    • Java EE 7 Eğitimi
    • Spring Framework Eğitimi
    • Git Eğitimi
  • Online Eğitimler
    • Online React.js Eğitimi
    • Online Angular 2 Eğitimi
    • Online Spring Boot Eğitimi
  • Referanslar
  • Hakkında
  • İletişim

Java’da Record’lar

  • Posted by Rahman Usta
  • Categories Java
  • Date 27 Ocak 2020

Java’da Record’lar – OpenJDK 14 içinde JEP 359 kapsamında geliştirilen class veya enum benzeri yeni programlama dili bileşenlerine denmektedir. Record’lar Java dilindeki sınıflara benzemektedir fakat Java sınıfları aksine daha kolay bir şekilde tanımlanabilmektedirler. Şimdi bir örneklemeyle bunu açıklayalım

Aşağıda koordinat sisteminde bir noktayı temsil eden Point sınıfını görmektesiniz. Tasarım açısından bakıldığında Point sınıfının sadece x ve y adında iki bilgi taşıyan bir “veri taşıyıcı sınıf” olarak değerlendirebiliriz.

public class Point {

    private int x;
    private int y;

    public Point(int x, int y) {
        this.x = x;
        this.y = y;
    }

    public int getX() {
        return x;
    }

    public void setX(int x) {
        this.x = x;
    }

    public int getY() {
        return y;
    }

    public void setY(int y) {
        this.y = y;
    }
}

Setter/getter metodları ve constructor’ların basit veri sınıflarında bile kendini tekrarlayan bir kalıpta yazılıyor olması zaman zaman eleştiri konusu olmuştur. Sizler de bunu düşünmüş veya birilerinden duymuş olabilirsiniz. Record’lar ise tam da bu noktaya parmak basarak daha kolay yazılabilen ve kendi kuralları olan class benzeri yapılar olarak karşımıza çıkmaktadır.

Eğer örnekleyecek olursak, yukarıdaki Point sınıfını record’lar ile aşağıdaki gibi tekrardan yazabiliriz.

record Point(int x, int y) { }

Buradaki sihiri sanırım görmektesiniz. Record tipinden örnekler sınıflarda olduğu gibi new kelimesiyle oluşturulmaktadır:

Point point= new Point(5,10);

Oluşturulan record içindeki alanlara ise kendi isminde oluşturulan metodlar ile erişilmektedir.

Point point= new Point(5,10);
int x= point.x();
int y= point.y();

Siz de eğer bu yeni Java özelliğini test etmek istiyorsanız https://tryjshell.org/ adresi üzerinden veya kendi cihazınızda JDK 14  kurarak deneyebilirsiniz. Şimdi ise Record’ların bazı özelliklerinden bahsedelim.

Record’ların özellikleri:

  • Record’un kendisi ve veri alanları ‘final’ olarak işaretlenmiştir. Dolayısıyla extend edilememekte ve oluşturulduktan sonra veri alanlarına tekrar atama yapılamamaktadır.
  • Değişken sayısı ihtiyacınıza göre bir, iki, üç veya daha fazla sayıda olabilir.
  • Veri alanlarına karşılık gelen metodları ve kurucu metod siz tanımlamasanız bile public erişime sahiptir.
  • equals ve hashCode metodları tanımlanan her bir veri alanını dahil edecek şekilde hesaplanmaktadır.
  • Record ismini, değişkenleri ve değerlerini anlamlı şekilde çıktılayacak şekilde toString metoduna sahiptir.
  • Record içindeki tanımlamalar (constructor, alanlar ve metodları) asıl yapısına ve kurallarına bağlı kalmak şartıyla el ile yazılabilmektedir. Örneğin aşağıdaki gibi bir kullanım olasıdır.
record Range(int low, int high) {
   public Range {
      if (low > high) {
        String msg= "Low cannot be greater than high. (low=%d,high=%d)"
        throw new IllegalArgumentException(String.format(msg, low, high));
      }
   }
}

Okuduğunuz için teşekkür eder ve esenlikler dilerim.

Kaynaklar:

[1] – https://openjdk.java.net/jeps/359

  • Share:
author avatar
Rahman Usta
Kodedu.com bünyesinde eğitim ve danışmanlık faaliyetleri sürdüren Rahman Usta, 2012 yılında yayına çıkan popülerJava Mimarisiyle Kurumsal Çözümler ve 2014 yılında yayınlanan Java 8 Ebook kitaplarının yazarıdır. Açık kaynak dünyasına katkı veren yazar, geliştirdiği AsciidocFX projesiyle Duke's Choice Award 2015 ödülünü kazanmıştır. Rahman ayrıca, Istanbul JUG'un ve Java standartlarını geliştiren JCP (Java Community Process)'in bir üyesidir. 2018 yılında Java Şampiyonu olarak seçilmiştir.

Previous post

Swagger Nedir? Neden kullanılır?
27 Ocak 2020

You may also like

javaee8-roadmap
Java EE 8 için yeni plan yolda!
13 Ekim, 2016
IMG_0757-892×1024
Java EE Eğitimi Son Sürat Devam Ediyor
14 Mart, 2013

Leave A Reply Cevabı iptal et

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

E-posta listesine kayıt olun!






Gözde yazılar

Dakick.com ile Röportaj
03Tem2012
Istanbul JUG – Big DATA Webineri (Video)
08Oca2015
Java Mimarisiyle Kurumsal Çözümler : Kurumsal Java Kitabı
16Eyl2012
Java API for JSON Processing – Stream bazlı JSON Üretmek ve Tüketmek
06Ağu2013

Son Yazılar

  • Java’da Record’lar 27 Ocak 2020
  • Swagger Nedir? Neden kullanılır? 10 Ekim 2018
  • Spring CLI ile Spring Boot Projeleri Hazırlamak 21 Ağustos 2017
  • Spring Cloud Netflix ve Eureka Service Discovery 3 Temmuz 2017
  • Online React.js Eğitimi ardından (15-25 Mayıs 2017) 31 Mayıs 2017

Son Yorumlar

  • YAML Nedir? Neden YAML Kullanmalıyız? için shahriyar
  • Java Persistence API Nedir? (Giriş) için Utku
  • Java 8 – CompletableFuture ile Asenkron Programlama için Rahman Usta
  • Java 8 – CompletableFuture ile Asenkron Programlama için burak
  • Arm7 Nxp 2104 işlemci ile basit bir Uygulama için Mustafa Dinc

Get Java Software

Arşivler

Bizi takip edin

React.js Eğitimi Başlıyor
11-22 Eylül, 2017
Eğitmen
Rahman Usta
İletişim

merhaba@kodedu.com

  • Hakkında
  • Gizlilik Politikası
  • İletişim
  • Referanslar
Kodedu Bilişim Danışmanlık
Cemil Meriç mah. Çelebi sok.
No:16/3 Ümraniye/İSTANBUL
Tel: 0850 885 38 65
Alemdağ V.D.: 8960484815

KODEDU © Tüm hakları saklıdır.