Kelas Record Java: Panduan untuk Pemula

Halo para pengembang Java masa depan! Hari ini, kita akan menjelajahi fitur yang menarik yang diperkenalkan di Java 14: Kelas Record. Jangan khawatir jika Anda baru mengenal pemrograman – saya akan membimbing Anda melalui konsep ini langkah demi langkah, sama seperti yang saya lakukan untuk banyak siswa selama tahun-tahun pengajaran saya. Jadi, ambil secangkir minuman kesukaan Anda, dan mari kita melompat masuk!

Java - Record Classes

Apa itu Java Record?

Bayangkan Anda mengumpulkan kartu bisbol. Setiap kartu memiliki informasi spesifik: nama pemain, tim, dan rata-rata pemukulannya. Di Java, kita sering membuat kelas untuk menyimpan jenis data ini. Record adalah jenis kelas khusus yang dirancang untuk melakukan hal yang demikian – menyimpan data – tetapi dengan kode yang jauh lebih sedikit daripada kelas tradisional.

Tujuan dari Java Record

Tujuan utama dari Java Record adalah untuk menyederhanakan penciptaan kelas yang utamanya digunakan untuk menyimpan data. Ini seperti memiliki pembantu di dapur yang menyiapkan semua bahan Anda sebelum Anda memulai memasak – Records menyiapkan data Anda sehingga Anda dapat fokus pada penggunaannya di program Anda.

Fitur dari Java Record

Mari kita lihat apa yang membuat Records khusus:

  1. Sintaksis ringkas: Tulis lebih sedikit, lakukan lebih banyak!
  2. Imutabilitas: Setelah dibuat, data tidak dapat diubah.
  3. Metode otomatis: Java membuat metode umum untuk Anda.
  4. Transparansi: Apa yang Anda lihat adalah apa yang Anda dapatkan – tidak ada bidang tersembunyi.

Contoh Tanpa Menggunakan Java Record

Sebelum kita lihat Record dalam aksi, mari kita buat kelas tradisional untuk kartu bisbol kita:

public class BaseballCard {
private final String playerName;
private final String team;
private final double battingAverage;

public BaseballCard(String playerName, String team, double battingAverage) {
this.playerName = playerName;
this.team = team;
this.battingAverage = battingAverage;
}

public String getPlayerName() {
return playerName;
}

public String getTeam() {
return team;
}

public double getBattingAverage() {
return battingAverage;
}

@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
BaseballCard that = (BaseballCard) o;
return Double.compare(that.battingAverage, battingAverage) == 0 &&
Objects.equals(playerName, that.playerName) &&
Objects.equals(team, that.team);
}

@Override
public int hashCode() {
return Objects.hash(playerName, team, battingAverage);
}

@Override
public String toString() {
return "BaseballCard{" +
"playerName='" + playerName + '\'' +
", team='" + team + '\'' +
", battingAverage=" + battingAverage +
'}';
}
}

Whew! Itu banyak kode untuk sesuatu yang begitu sederhana, kan? Sekarang, mari kita lihat bagaimana Records dapat membantu kita.

Contoh Menggunakan Java Record

Berikut adalah kartu bisbol yang sama yang diimplementasikan sebagai Record:

public record BaseballCard(String playerName, String team, double battingAverage) {}

Itu saja! Hanya satu baris kode. Tetapi jangan dipermalukan oleh kesederhanaannya – Record ini memiliki kekuatan besar. Itu secara otomatis membuat:

  • Sebuah konstruktor
  • Metode getter untuk setiap bidang
  • Metode equals(), hashCode(), dan toString()

Mari kita gunakan Record baru kita:

public class BaseballCardDemo {
public static void main(String[] args) {
BaseballCard card = new BaseballCard("Babe Ruth", "New York Yankees", 0.342);

System.out.println(card.playerName());  // Output: Babe Ruth
System.out.println(card.team());        // Output: New York Yankees
System.out.println(card.battingAverage()); // Output: 0.342
System.out.println(card);  // Output: BaseballCard[playerName=Babe Ruth, team=New York Yankees, battingAverage=0.342]
}
}

Seperti yang Anda lihat, kita dapat membuat dan menggunakan BaseballCard Record seperti kelas reguler, tetapi dengan kode yang jauh lebih sedikit!

Java Record untuk Interface Tertutup

Records juga dapat mengimplementasikan interface, termasuk interface tertutup. Interface tertutup seperti klub VIP – itu mengontrol jenis kelas mana yang dapat menjadi anggotanya.

Berikut adalah contohnya:

public sealed interface Athlete permits BaseballPlayer, BasketballPlayer {}

public record BaseballPlayer(String name, String team) implements Athlete {}
public record BasketballPlayer(String name, String team) implements Athlete {}

public class SportsDemo {
public static void main(String[] args) {
Athlete player1 = new BaseballPlayer("Mike Trout", "Los Angeles Angels");
Athlete player2 = new BasketballPlayer("LeBron James", "Los Angeles Lakers");

System.out.println(player1);  // Output: BaseballPlayer[name=Mike Trout, team=Los Angeles Angels]
System.out.println(player2);  // Output: BasketballPlayer[name=LeBron James, team=Los Angeles Lakers]
}
}

Dalam contoh ini, hanya BaseballPlayer dan BasketballPlayer yang diizinkan untuk mengimplementasikan interface Athlete.

Mengganti Metode dari Java Records

Meskipun Records menyediakan implementasi otomatis dari metode umum, Anda masih dapat menggantinya jika diperlukan. Berikut adalah contohnya:

public record BaseballCard(String playerName, String team, double battingAverage) {
@Override
public String toString() {
return playerName + " bermain untuk " + team + " dengan rata-rata pemukulan " + battingAverage;
}
}

public class BaseballCardDemo {
public static void main(String[] args) {
BaseballCard card = new BaseballCard("Babe Ruth", "New York Yankees", 0.342);
System.out.println(card);  // Output: Babe Ruth bermain untuk New York Yankees dengan rata-rata pemukulan 0.342
}
}

Di sini, kita telah mengganti metode toString() untuk memberikan output yang lebih dapat dibaca.

Kesimpulan

Java Records adalah alat yang kuat untuk membuat kelas sederhana yang berfokus pada data dengan kode boilerplate minimal. Mereka sempurna untuk saat Anda perlu mengelompokkan potongan data yang terkait, seperti dalam contoh kartu bisbol kita.

Ingat, pemrograman seperti belajar untuk memainkan alat musik – itu memerlukan praktek. Jadi, cobalah untuk membuat Record Anda sendiri untuk jenis data yang berbeda. Mungkin Anda bisa membuat BookRecord atau MovieRecord. Semakin banyak Anda praktek, semakin nyaman Anda akan menjadi dengan konsep ini.

Terus kode, terus belajar, dan yang paling penting, bersenang-senang! Siapa tahu, mungkin suatu hari Anda akan membuat Java Record untuk menyimpan data tentang buku pengembangan program Anda yang terjual baik. Mimpi besar, kode yang lebih besar!

Credits: Image by storyset