Rumah >Java >javaTutorial >Padanan Corak dan Rekod Perubahan dalam Java Setiap Pembangun Java Mesti Tahu

Padanan Corak dan Rekod Perubahan dalam Java Setiap Pembangun Java Mesti Tahu

王林
王林asal
2024-08-12 06:47:32750semak imbas

Pattern Matching and Records Changes in Java  Every Java Developer Must Know

Dengan keluaran Java 16, peningkatan besar telah diperkenalkan dengan pengenalan Rekod (JEP 395), yang membolehkan cara yang lebih mudah dan ringkas untuk mengisytiharkan kelas yang digunakan terutamanya untuk membawa data. Penambahbaikan ini kini telah dipertingkatkan lagi di Java 21, dengan penambahan Padanan Corak dan Rekod (JEP 406). Ciri baharu ini membolehkan penggunaan padanan corak untuk menguji sama ada nilai ialah tika kelas Rekod dan mengekstrak komponennya dengan cara yang lebih diperkemas. Dalam artikel ini, kami akan meneroka perubahan yang dibawa oleh Padanan Corak dan Rekod dalam Java 21 dan cara ia boleh memanfaatkan pembangun Java.

Rekod sebagai Pembawa Telus untuk Data
Rekod, yang diperkenalkan dalam Java 16, ialah kelas yang digunakan terutamanya untuk menyimpan dan membawa data. Mereka adalah pembawa telus, bermakna bahawa tujuan utama mereka adalah untuk menyimpan data, dan semua fungsi lain seperti pembina, kaedah, dan kaedah equals/hashCode, dijana secara automatik oleh pengkompil, berdasarkan medan data yang ditakrifkan dalam rekod. Ini menjadikan ia sesuai untuk digunakan dalam senario di mana data perlu disiri atau dihantar melalui rangkaian.

Pertimbangkan contoh kelas Line yang mentakrifkan dua koordinat X dan Y:

Baris rekod(int x, int y) {}

Untuk menggunakan kelas ini, kita hanya boleh membuat contoh kelas Line dan mengakses medan datanya menggunakan kaedah pengakses komponen terbina dalam, x() dan y():

Barisan baris = Baris baharu(0, 10);
int x = line.x();
int y = line.y();
System.out.println("X: " + x + ", Y: " + y); // Output: X: 0, Y: 10

Padanan Corak dengan Rekod
Dalam Java 21, Pemadanan Corak telah ditambahkan yang membolehkan untuk menguji sama ada nilai ialah contoh kelas Rekod dan mengekstrak komponennya dengan cara yang lebih diperkemas. Ciri ini amat berguna apabila berurusan dengan pangkalan kod besar yang menggunakan Rekod secara meluas.

Pertimbangkan contoh berikut di mana kita ingin menguji sama ada objek ialah contoh kelas Line dan mengekstrak komponennya:

panjang lompang statik(obj objek) {
if (obj instanceof Line l) {
int x = l.x();
int y = l.y();
System.out.println(y-x);
}
}
Seperti yang anda boleh lihat, kami telah menggunakan corak jenis untuk menguji sama ada objek itu adalah contoh Point dan jika ya, kami telah mengekstrak komponennya dengan menggunakan kaedah pengakses komponen terbina dalam. Walaupun kod ini berfungsi, ia boleh dipermudahkan lagi dengan penggunaan corak rekod dalam Java 21.

Dengan corak rekod, kami bukan sahaja boleh menguji sama ada nilai ialah tika kelas Rekod, tetapi kami juga boleh mengekstrak komponennya dalam satu baris kod. Ini dicapai dengan mengangkat pengisytiharan pembolehubah tempatan untuk komponen yang diekstrak ke dalam corak itu sendiri dan memulakan pembolehubah tersebut dengan menggunakan kaedah pengakses apabila nilai dipadankan dengan corak.

Pertimbangkan kod berikut yang menggunakan corak rekod:

panjang lompang statik(obj objek) {
if (obj instanceof Line(int x, int y)) {
System.out.println(y-x);
}
}
Kod ini lebih ringkas dan boleh dibaca. Kami telah menghapuskan keperluan untuk mencipta objek baharu dan menggunakan kaedah pengakses komponennya untuk mendapatkan data. Corak rekod secara langsung mengekstrak dan memulakan komponen untuk kami, menjadikan kod kami lebih diperkemas.

Corak Rekod Bersarang
Salah satu cabaran utama yang dihadapi oleh pembangun ialah berurusan dengan graf objek kompleks dan mengekstrak data daripadanya. Di sinilah kuasa sebenar padanan corak datang, kerana ia membolehkan kami membuat skala dengan elegan dan memadankan graf objek yang lebih rumit.

Pertimbangkan kelas berikut: Pekerja, Jabatan (enum) dan Syarikat (rekod). Kita boleh menggunakan corak rekod untuk mengekstrak Jabatan Pekerja daripada objek Syarikat:

// Mulai Java 21
statik void printJabatan Pekerja(Syarikat c, Nama rentetan) {
jika (c contoh Syarikat(Jabatan Jabatan, Senarai pekerja)) {
untuk (Pekerja e : pekerja) {
jika (e.getName().sama dengan(nama)) {
System.out.println(nama + " berada dalam " + jabatan + " jabatan.");
kembali;
}
}
}
System.out.println(nama + " tidak dijumpai.");
}
Dalam contoh ini, kami menggunakan corak bersarang untuk mengekstrak Jabatan Pekerja daripada objek Syarikat. Kami menyemak sama ada objek Syarikat yang diberikan mempunyai Jabatan dan senarai Pekerja, dan kemudian melingkari senarai untuk mencari Pekerja dengan nama yang diberikan. Jika Pekerja ditemui, kami mencetak jabatan mereka. Jika tidak, kami mencetak mesej yang mengatakan bahawa Pekerja tidak ditemui.

Corak bersarang juga boleh digunakan dalam situasi di mana kita ingin memadankan dan menyahbina berbilang nilai sekaligus. Pertimbangkan contoh berikut di mana kita ingin menyemak sama ada koordinat yang diberikan terletak di dalam segi empat tepat:

//Setakat Java 21
rekod Titik(ganda x, dua kali y) {}

rakam Segiempat tepat(Titik atas Kiri, Tuding bawah Kanan) {}

// semak sama ada titik yang diberikan terletak di dalam segi empat tepat yang diberikan
boolean statik isPointInsideRectangle(Titik p, Rectangle r) {
if (r instanceof Rectangle(Point(var x1, var y1), Point(var x2, var y2))) {
jika (p.x() > x1 && p.y() > y1 && p.x() < x2 && p.y() < y2) {
kembali benar;
}
}
pulangkan palsu;
}

Dalam contoh ini, kami menggunakan corak bersarang untuk menyemak sama ada objek Point yang diberikan berada dalam sempadan objek Rectangle yang diberikan. Corak bersarang membolehkan kami mengakses koordinat x dan y bagi titik kiri atas dan kanan bawah segi empat tepat tanpa perlu menulis berbilang baris kod.

Kesimpulannya, dengan penambahan Padanan Pola dan Rekod (JEP 406) dalam Java 21, terdapat peningkatan yang ketara dalam cara kami boleh mengendalikan dan mengekstrak data daripada objek kompleks. Ciri ini sangat memudahkan kod dan menjadikannya lebih mudah dibaca dan ringkas. Ia juga membantu dalam mengendalikan senario kegagalan di mana padanan corak mungkin gagal. Dengan perubahan ini, Java 21 terus menjadikan kod lebih diperkemas dan menambah baik pengalaman pembangunan untuk pembangun Java.

Tingkatkan kemahiran Java 21 anda dengan Ujian Amalan Profesional Pembangun Java SE 21 MyExamCloud. Kembangkan dan uji pengetahuan anda untuk menjadi pakar Java 21.

Atas ialah kandungan terperinci Padanan Corak dan Rekod Perubahan dalam Java Setiap Pembangun Java Mesti Tahu. 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