• 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
KodEdu
  • 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 Kodedu
  • 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
Kodedu

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

Hafif bir Kod Editörü – Brackets
30Haz2012
Java’da Record’lar
27Oca2020
Reflection ile Dependency Injection nasıl gerçekleştirilir?
04Eyl2012
Integration of Spring MVC and Mustache
02Ağ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

  • Coupling ve Cohesion Kavramları Nedir? için Hilal
  • Naïve Bayes Sınıflandırma Algoritması için Rahman Usta
  • Naïve Bayes Sınıflandırma Algoritması için Mete
  • YAML Nedir? Neden YAML Kullanmalıyız? için kara
  • JWT (JSON Web Tokens) Nedir? Ne işe yarar? için Furkan

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.