Java Record Classes: A Beginner's Guide

Helo di sana, pembangun Java masa depan! Hari ini, kita akan untuk menjelajahi fitur yang menarik yang diperkenalkan di Java 14: Record Classes. Jangan khawatir jika kamu baru dalam pemrograman – saya akan memandu kamu melalui konsep ini langkah demi langkah, seperti yang saya lakukan untuk pelajar yang tak terhingga dalam tahun tahun pengajaran saya. Jadi, rakamkan satu gelas minuman kesukaan kamu, dan mari kita melompat masuk!

Java - Record Classes

Apa itu Java Record?

Bayangkan kamu sedang mengutip kad bisbol. Setiap kad memiliki informasi spesifik: nama pemain, rak, dan rakit bisbol. Di Java, kita sering membuat kelas untuk menyimpan jenis data ini. Record adalah jenis kelas khusus yang dirancang untuk melakukan itu – menyimpan data – tetapi dengan kod yang jauh kurang daripada kelas tradisional.

Tujuan Java Record

Tujuan utama Java Record adalah untuk menyederhanakan penciptaan kelas yang secara utama digunakan untuk menyimpan data. Ia seperti memiliki pembantu di dapur yang menyiapkan semua bahan kamu sebelum kamu mula untuk memasak – Records menyiapkan data kamu supaya kamu dapat fokuskan untuk menggunakannya di program kamu.

Fitur Java Record

Mari kita lihat apa yang membuat Records khusus:

  1. Sintaksik yang ringkas: Tulis lebih sedikit, lakukan lebih banyak!
  2. Ketidakbolehan untuk diubah: Setelah diciptakan, data tidak dapat diubah.
  3. Metode otomatis: Java membuat metode umum untuk kamu.
  4. Transparansi: Apa yang kamu lihat adalah apa yang kamu dapatkan – tidak ada medan tersembunyi.

Contoh Tanpa Menggunakan Java Record

Sebelum kita lihat Record dalam aksi, mari kita membuat kelas tradisional untuk kad 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 +
'}';
}
}

Wah! Itu adalah banyak kod untuk sesuatu yang begitu simple, kan? Sekarang, mari kita lihat bagaimana Records dapat membantu kita.

Contoh Menggunakan Java Record

Inilah kad bisbol yang sama yang diimplementasikan sebagai Record:

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

Itu saja! Hanya satu baris kod. Tetapi jangan membiarkan kebiasaanannya untuk mengelirukan kamu – Record ini memiliki banyak kelebihan. Ia secara otomatis membuat:

  • Sebuah konstruktor
  • Metode getter untuk setiap medan
  • 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 dapat kamu lihat, kita dapat membuat dan menggunakan BaseballCard Record seperti kelas biasa, tetapi dengan banyak lebih sedikit kod!

Java Record untuk Antara Muka yang Dikunci

Records juga dapat mengimplementasikan antara muka, termasuk antara muka yang dikunci. Antara muka yang dikunci adalah seperti klub VIP – ia mengawal jenis kelas yang boleh menjadi ahliannya.

Inilah 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 antara muka Athlete.

Mengganti Metode Java Records

Walaupun Records menyediakan implementasi otomatis untuk metode umum, kamu masih dapat menggantikannya jika diperlukan. Inilah contohnya:

public record BaseballCard(String playerName, String team, double battingAverage) {
@Override
public String toString() {
return playerName + " bermain untuk " + team + " dengan rata-rata rakit " + 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 rakit 0.342
}
}

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

Kesimpulan

Java Records adalah alat yang kuat untuk membuat kelas yang sederhana dan fokus pada data dengan boilerplate kod yang minimal. Mereka sempurna untuk saat kamu perlu untuk mengelompokkan potongan data yang berkaitan, seperti dalam contoh kad bisbol kita.

Ingat, pemrograman adalah seperti belajar untuk memainkan alat musik – ia memerlukan latihan. Jadi, cubilah membuat Record kamu sendiri untuk jenis data yang berbeda. Mungkin kamu membuat BookRecord atau MovieRecord. Semakin banyak kamu latih, semakin mudah kamu akan menjadi dengan konsep ini.

Teruskan untuk mengkod, teruskan untuk belajar, dan yang paling penting, bersenang-senang! Siapa tahu, mungkin suatu hari kamu akan membuat Java Record untuk menyimpan data tentang buku pemrograman terjual kamu sendiri. Impikan besar, kode lebih besar!

Credits: Image by storyset