Rumah  >  Artikel  >  Java  >  Meneroka Corak Rekod Java dan Padanan Corak

Meneroka Corak Rekod Java dan Padanan Corak

WBOY
WBOYasal
2024-08-17 19:04:31797semak imbas

Exploring Java Record Patterns and Pattern Matching

Corak rekod Java telah diperkenalkan di Java 16 sebagai sebahagian daripada Project Amber dan dipertingkatkan dalam Java 21 dengan penambahan dekonstruktor dan padanan corak. Ciri ini membolehkan cara pengendalian data yang lebih ringkas dan fleksibel dalam aplikasi Java. Dalam tutorial ini, kami akan merangkumi konsep corak rekod, cara ia membantu dalam padanan corak dan pelbagai contoh pengekodan.

1. Rekap Pantas Rekod Java
Sebelum menyelami corak rekod, mari kita buat rekap pantas rekod Java. Rekod telah diperkenalkan di Java 14 sebagai jenis kelas baharu yang direka khusus untuk menyimpan data tidak boleh diubah. Mereka menghapuskan keperluan untuk menulis kod boilerplate dengan menyediakan sintaks yang lebih ringkas untuk menentukan kelas dengan data. Dalam contoh berikut, kami mentakrifkan rekod bernama "Orang" dengan tiga medan: nama pertama, nama keluarga dan umur.

rakam Orang(String firstName, String lastName, int umur) {}

Rekod, tidak boleh ubah, menyekat ciri tertentu:

  • Semua medan adalah muktamad
  • Kelas secara tersirat adalah muktamad
  • Pengisytiharan medan contoh adalah dilarang

Rekod menjana kaedah pembina dan pengambil secara automatik untuk setiap medan, menjadikannya lebih sesuai untuk pembawa data berbanding kelas tradisional.

2. Apakah Corak Rekod?
Corak rekod, yang diperkenalkan dalam Java 21, menggabungkan konsep corak dengan rekod yang membolehkan untuk menyahbina dan mengekstrak nilai daripada rekod dengan mudah. Corak rekod terdiri daripada jenis kelas rekod dan pembolehubah corak pilihan yang diberi nilai yang diekstrak daripada rekod sasaran hanya jika ujian berjaya.

Nilai nol tidak sepadan dengan mana-mana corak rekod, jadi pembolehubah corak tidak akan dimulakan dalam kes ini.

3. Pemusnah Rekod
Pemusnah ialah songsang bagi pembina. Ia mengekstrak nilai daripada objek dan bukannya menambahnya. Dalam konteks rekod, pemusnah dipanggil "dekonstruktor." Ia membenarkan penguraian nilai rekod ke dalam komponen individu mereka. Katakan kita mempunyai rekod bernama "Nama" dengan medan berikut:

rekod Pelanggan(String firstName, String lastName, int umur) {}

Kami boleh menggunakan dekonstruktor untuk mengekstrak nilai medan ini daripada contoh rekod "Pelanggan", seperti yang ditunjukkan dalam contoh berikut:

Pelanggan pelanggan = Pelanggan baharu("Jane", "Smith", 30);

jika (contoh pelanggan bagi Pelanggan(String firstName, String lastName, int umur)) {
System.out.println("First Name: " + firstName); // Jane
System.out.println("Nama Akhir: " +Nama Akhir); // Smith
System.out.println("Umur: " + umur); // 30
}

Struktur rekod boleh berguna dalam situasi di mana kita perlu menyimpan dan mendapatkan berbilang nilai berkaitan sebagai satu objek. Ciri penyahbinaan rekod membolehkan kami mengekstrak dan menggunakan nilai tersebut dengan mudah dalam kod kami.

4. Catat Corak dalam Pernyataan Suis
Java 16 memperkenalkan padanan corak untuk pernyataan instanceof, yang dikembangkan lagi dalam Java 21 untuk memasukkan pernyataan suis. Ia membolehkan kod yang lebih ringkas dan boleh dibaca semasa mengendalikan berbilang corak.

Katakanlah kami mempunyai rekod bernama "Akaun " dengan tiga subjenis: "SavingAccount ," "CreditCardAccount" dan "HomeLoanAccount." Setiap subjenis mempunyai cara yang berbeza untuk mengira bakinya. Kita boleh menggunakan corak rekod dalam pernyataan suis untuk mengendalikan ketiga-tiga kes ini, seperti yang ditunjukkan di bawah:

Akaun antara muka {}
rekod SavingAccount (baki berganda) melaksanakan Akaun {}
rekod CreditCardAccount(double creditLimit, double used) melaksanakan Akaun {}
rekod HomeLoanAccount(double totalAmount, double amountPaid) melaksanakan Akaun {}

Akaun akaun= CreditCardAccount baru(10000, 1000);

suis (bentuk) {
case SavingAccount s:
System.out.println("Baki Akaun ialah " + baki);
rehat;
kes CreditCardAccount c:
System.out.println("Baki Kredit ialah: " + (creditLimit-digunakan));
rehat;
kes Akaun Pinjaman Rumah h:
System.out.println("Balence " +(totalAmount-amountPaid));
rehat;
lalai:
System.out.println("Akaun Tidak Diketahui");
}

5. Corak Bersarang
Selain mengekstrak nilai daripada satu rekod, corak rekod juga boleh disarangkan untuk mengendalikan rekod yang lebih kompleks. Katakan kita mempunyai rekod bernama "Akaun" yang mempunyai medan jenis "Pelanggan" dan medan lain jenis "Alamat." Kita boleh menggunakan corak rekod bersarang untuk mengekstrak nilai daripada kedua-dua medan ini, seperti yang ditunjukkan dalam contoh berikut:

rekod Pelanggan(String firstName, String lastName, int umur) {}

rakam Akaun(Customer cust, Address address) {}

Pelanggan pelanggan = Pelanggan baharu("John", "Doe", 25);
Alamat alamat = Alamat baru("123 Jalan Utama.","Bandar", "Negeri");
Akaun akaun = Akaun baharu(pelanggan, alamat);

jika (contoh akaun bagi Akaun(Pelanggan(fName, lName, umur), Alamat(jalan, bandar, negeri))) {
System.out.println("Nama Pertama: " + fName); // John
System.out.println("Nama Akhir: " + lNama); // Doe
System.out.println("Umur: " + umur); // 25
System.out.println("Alamat: " + jalan + ", " + bandar + ", " + negeri); // 123 Main St., Bandar, Negeri
}

Dalam contoh ini, kami menggunakan dua corak bersarang untuk mengekstrak nilai daripada medan "Pelanggan" dan "Alamat" rekod "Akaun".

6. Padanan Komponen
Corak rekod membolehkan lebih fleksibiliti kerana pembolehubah corak tidak perlu sepadan dengan nama komponen rekod. Selagi ia serasi, padanan corak akan berjaya. Contohnya:

rakam Pelanggan(String firstName, String lastName, int umur) {}

rakam Akaun(Customer cust, Address address) {}

Pelanggan pelanggan = Pelanggan baharu("John", "Doe", 25);

jika (contoh pelanggan bagi Pelanggan(var fn, var ln, umur var)) {
System.out.println("Nama Pertama: " + fn); // John
System.out.println("Nama Akhir: " + ln); // Doe
System.out.println("Umur: " + umur); // 25
}

// Mengakses komponen rekod bersarang
Akaun akaun = Akaun baharu(pelanggan, Alamat baharu("123 Main St", "New York", "NY"));
if (contoh akaun bagi Akaun(var cust, alamat var)) {
System.out.println("Pelanggan: " + pelanggan); // Pelanggan[firstName=John, lastName=Doe, umur=25]
System.out.println("Alamat: " + alamat); // Alamat[jalan=123 Main St, bandar=New York, negeri=NY]
}

Di sini, pembolehubah corak "fn" dan "ln" adalah berbeza daripada nama komponen "fName" dan "lName" yang sepadan dalam rekod "Pelanggan". Ini menjadikan corak rekod lebih fleksibel dan mengelakkan sebarang kemungkinan konflik dengan nama pembolehubah.

7. Kesimpulan
Kesimpulannya, corak rekod Java menyediakan cara yang mudah untuk menyahbina rekod dan mengekstrak nilai daripadanya. Mereka menjadikan kod lebih ringkas, bersih dan boleh dibaca semasa mengendalikan padanan corak dalam pernyataan instanceof dan suis. Corak rekod, digabungkan dengan pemusnah rekod, membolehkan pengendalian rekod kompleks yang lebih mantap. Secara keseluruhan, ciri ini meningkatkan penggunaan rekod sebagai pembawa data dan menjadikan pengaturcaraan Java lebih menyenangkan.

Pembangun boleh menemui lebih banyak ciri Java 21 dengan belajar untuk peperiksaan SE 21 Developer Certified Professional dengan menggunakan Ujian Amalan 1Z0-830 MyExamCloud.

Atas ialah kandungan terperinci Meneroka Corak Rekod Java dan Padanan Corak. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn