Di JDK-14, catatan kata kunci baru diperkenalkan, blog ini merupakan upaya untuk menjelaskan penggunaan kata kunci ini dan bagaimana hal itu akan membantu kita para pemrogram untuk menulis kode dengan kode boilerplate yang lebih sedikit dalam beberapa kasus.

Kasus penggunaan:

Katakanlah kita harus membuat kelas Java Employee baru yang tidak dapat diubah, yang dapat menampung dan meneruskan data kita. Sekarang kita tahu bahwa di kelas yang tidak dapat diubah, bidangnya harus final dan pribadi, kelas tersebut harus memiliki konstruktor argumen semua publik dan hanya boleh ada pengambil dan tidak ada penyetel. Itu harus memiliki metode toString(), sama dengan() dan hashCode() juga.

Mengingat persyaratan di atas, kode kita akan terlihat seperti ini:

package org.example;

import java.util.Objects;

public class EmployeeNormal {

    private String name;
    private String lastName;

    public EmployeeNormal(String name, String lastName){
        this.name = name;
        this.lastName = lastName;
    }
    public String getName() {
        return name;
    }
    public String getLastName() {
        return lastName;
    }
    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        EmployeeNormal that = (EmployeeNormal) o;
        return Objects.equals(name, that.name) && Objects.equals(lastName, that.lastName);
    }

    @Override
    public int hashCode() {
        return Objects.hash(name, lastName);
    }

    @Override
    public String toString() {
        return "EmployeeNormal{" +
                "name='" + name + '\'' +
                ", lastName='" + lastName + '\'' +
                '}';
    }
}

Dalam contoh di atas, kita harus menulis semuanya sendiri dan katakanlah besok persyaratannya berubah dan kita perlu menambahkan bidang baru di kelas Karyawan.

Untuk menambahkan kolom baru kita harus menambahkan kolom tersebut, lalu memperbarui metode toString(), sama dengan() dan kode hash(). Proses ini agak memakan waktu dan membosankan.

Jadi dimulai dengan JDK-14 Java telah memperkenalkan kata kunci record, yang dengannya kita dapat menulis kode di atas dengan cara yang sederhana.

Like an enum, a record is a restricted form of a class. It’s ideal for "plain data carriers," classes that contain data not meant to be altered and only the most fundamental methods such as constructors and accessors.

Contoh kode di atas dapat ditulis secara sederhana sebagai:

package org.example;

public record EmployeeRecord(String name, String lastName) {

}

Itu dia….!!!!

Kita hanya perlu menggunakan kata kunci record dan kita telah membuat kelas abadi kita.

Sebuah catatan memperoleh anggota ini secara otomatis:

  • Bidang final pribadi untuk setiap komponennya
  • Metode pengakses baca publik untuk setiap komponen dengan nama dan tipe komponen yang sama; dalam contoh ini, metode ini adalah EmployeeRecord::name() dan EmployeeRecord::lastName()
  • Konstruktor publik yang tanda tangannya berasal dari daftar komponen rekaman. Konstruktor menginisialisasi setiap bidang privat dari argumen terkait.
  • Implementasi metode equals() dan hashCode(), yang menetapkan bahwa dua record adalah sama jika tipenya sama dan komponen record yang bersesuaian juga sama
  • Implementasi metode toString() yang menyertakan representasi string dari semua komponen rekaman, beserta namanya

Kode driver untuk contoh di atas:

package org.example;

public class Main {
    public static void main(String[] args) {


        EmployeeRecord emp = new EmployeeRecord("Himanshu", "Rai");

        System.out.println(emp.name());
        System.out.println(emp.lastName());
        System.out.println(emp.hashCode());
        System.out.println(emp.toString());
    }
}

Catatan: Berbeda dengan getter() tradisional, dalam record getterName tidak diawali dengan get dan hanya mirip dengan nama field. Ini bukan emp.getName() tetapi akan menjadi emp.name().

Namun, ada juga beberapa batasan yang tercatat, yaitu sebagai berikut:

  • Catatan tidak dapat memperluas kelas apa pun
  • Catatan tidak boleh abstrak; mereka secara implisit final
  • Komponen-komponen suatu rekaman secara implisit bersifat final

Itu saja untuk hari ini. Terima kasih telah membaca artikel ini. Silakan berkomentar untuk masukan dan saran apa pun.

Jangan lupa bertepuk tangan dan berlangganan jika Anda menikmatinya!!