Record class di Java adalah fitur yang diperkenalkan pada Java 14 sebagai preview dan menjadi fitur stabil mulai Java 16. Record digunakan untuk merepresentasikan data sederhana tanpa harus menuliskan boilerplate code yang biasa ada pada class biasa seperti constructor, equals()
, hashCode()
, dan toString()
.
Minimum version untuk memakai Java Record |
Record class adalah jenis class khusus yang secara otomatis meng-override beberapa metode standar seperti equals()
, hashCode()
, dan toString()
. Dengan menggunakan record, Anda hanya perlu mendefinisikan field yang merepresentasikan data, dan Java akan secara otomatis menyediakan implementasi dari metode-metode tersebut.
Sintaks Dasar
record Student(String name, int age) {}
Atau dengan constuctor seperti ini.
record Student(String name, int age) {
public Student {
if (age < 0) {
throw new IllegalArgumentException("Age cannot be negative");
}
}
}
Kode di atas akan membuat class Person
dengan dua field: name
dan age
. Java secara otomatis menghasilkan constructor, equals()
, hashCode()
, dan toString()
untuk class ini.
Fungsi Kegunaan
- Representasi Data Sederhana: Record cocok digunakan untuk merepresentasikan data transfer objects (DTO) atau entitas data yang hanya berisi properti.
- Mengurangi Boilerplate Code: Dengan menggunakan record, pengembang tidak perlu menulis manual constructor,
equals()
,hashCode()
, dantoString()
. - Immutability: Record class secara default immutable, artinya field-nya bersifat
final
dan nilai-nilainya tidak bisa diubah setelah objek dibuat. - Meningkatkan Pembacaan Kode: Kode yang menggunakan record menjadi lebih ringkas dan mudah dibaca karena hanya fokus pada data yang direpresentasikan.
Kelebihan Record Class
- Sederhana dan Cepat Ditulis: Sangat membantu dalam pembuatan class yang hanya berfungsi sebagai pembawa data (POJO).
- Konsistensi Kode: Implementasi
equals()
,hashCode()
, dantoString()
yang dihasilkan otomatis konsisten dan mengikuti praktik terbaik. - Keamanan Immutability: Dengan sifat immutable, record lebih aman digunakan dalam aplikasi multithreading.
- Pengurangan Risiko Human Error: Karena metode-metode standar dihasilkan otomatis, risiko kesalahan implementasi berkurang.
Contoh Lengkapnya
package com.mhyusuf;
record Student(String name, int age) {
public Student {
if (age < 0) {
throw new IllegalArgumentException("Age cannot be negative");
}
}
}
public class HaloRecord {
public static void main(String[] args) {
Student student = new Student("M. Yusuf", 25);
System.out.println(student.name());
System.out.println(student.age());
System.out.println(student.toString());
}
}
Contoh saat kode di jalankan. |
Comments
Post a Comment