Rumah  >  Artikel  >  Java  >  Bagaimana untuk menjana kaedah equals() dan hashCode() secara automatik menggunakan kelas Rekod dalam Java 14

Bagaimana untuk menjana kaedah equals() dan hashCode() secara automatik menggunakan kelas Rekod dalam Java 14

PHPz
PHPzasal
2023-07-31 13:52:511351semak imbas

Cara menjana kaedah equals() dan hashCode() secara automatik menggunakan kelas Records dalam Java 14

Dalam pengaturcaraan Java, kita selalunya perlu menulis kaedah equals() dan hashCode() untuk kelas kita. Kedua-dua kaedah ini sangat penting apabila berurusan dengan kesamaan dan kod cincang objek. Untuk memudahkan proses ini, Java 14 memperkenalkan kelas Rekod baharu. Kelas Records menyediakan cara yang dipermudahkan untuk menulis kaedah equals() dan hashCode(), dan pelaksanaan kedua-dua kaedah ini boleh dijana secara automatik berdasarkan pembolehubah ahli kelas. Artikel ini akan memperkenalkan cara menggunakan kelas Rekod dalam Java 14 untuk menjana kaedah equals() dan hashCode() secara automatik.

Pertama, mari kita lihat contoh mudah. Katakan kita mempunyai kelas bernama Person, yang mempunyai dua pembolehubah ahli: nama dan umur. Kami mahu dapat membandingkan dua objek Orang untuk kesamaan dan kod cincang yang menjananya.

Sebelum Java 14, kami terpaksa menulis kaedah equals() dan hashCode() secara manual, seperti yang ditunjukkan di bawah:

public class Person {
    private String name;
    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }

    @Override
    public boolean equals(Object obj) {
        if (this == obj) {
            return true;
        }
        if (obj == null || getClass() != obj.getClass()) {
            return false;
        }
        Person person = (Person) obj;
        return age == person.age && Objects.equals(name, person.name);
    }

    @Override
    public int hashCode() {
        return Objects.hash(name, age);
    }
}

Kod di atas melaksanakan kaedah equals() dan hashCode() bagi kelas Person, tetapi logiknya memerlukan untuk ditulis secara manual. Bandingkan pembolehubah ahli untuk kesamarataan dan hasilkan kod cincang.

Sekarang, mari gunakan kelas Rekod untuk memudahkan proses ini. Kita boleh terus menggunakan kata kunci Rekod untuk menentukan kelas dan menentukan pembolehubah ahlinya. Kemudian, kelas Rekod akan menjana pelaksanaan kaedah equals() dan hashCode() secara automatik untuk kami. Dalam kes ini, kita boleh menggunakan kod berikut untuk mentakrifkan kelas Orang:

public record Person(String name, int age) {}

Ya, semudah itu! Dengan hanya satu baris kod, kami mentakrifkan kelas Rekod dan secara automatik mendapatkan pelaksanaan kaedah equals() dan hashCode().

Sekarang, mari sahkannya:

public class Main {
    public static void main(String[] args) {
        Person person1 = new Person("Alice", 25);
        Person person2 = new Person("Alice", 25);
        Person person3 = new Person("Bob", 30);
        
        System.out.println(person1.equals(person2)); // 输出:true
        System.out.println(person1.equals(person3)); // 输出:false
        
        System.out.println(person1.hashCode()); // 输出:2035395
        System.out.println(person2.hashCode()); // 输出:2035395
        System.out.println(person3.hashCode()); // 输出:66181377
    }
}

Seperti yang kita lihat, dengan menggunakan kelas Rekod, kita boleh membandingkan dua objek Orang dengan mudah untuk kesaksamaan dan menjana kod cincang mereka. Kaedah equals() bagi kelas Person akan secara automatik membandingkan kesamaan nama dan umur dua pembolehubah ahli, dan kaedah hashCode() secara automatik akan menjana kod cincang berdasarkan nama dan umur.

Selain itu, kelas Records juga menyediakan pembina, yang boleh kita gunakan untuk membuat instantiate objek dan mengakses nilainya melalui pembolehubah ahli. Sebagai contoh, kita boleh mengakses nama dan umur objek Orang melalui person.name dan person.age.

Untuk meringkaskan, ia adalah cara yang sangat mudah dan mudah untuk menggunakan kelas Rekod untuk menjana kaedah equals() dan hashCode() secara automatik dalam Java 14. Kita hanya perlu mentakrifkan kelas Rekod dengan satu baris kod, dan kemudian kita boleh membandingkan objek dengan mudah untuk kesamarataan dan menjana kod cincang. Kaedah yang dijana secara automatik ini sangat memudahkan penulisan kod dan meningkatkan kecekapan pembangunan. Oleh sebab itu, kelas Records telah menjadi ciri yang sangat berguna dalam Java 14.

Atas ialah kandungan terperinci Bagaimana untuk menjana kaedah equals() dan hashCode() secara automatik menggunakan kelas Rekod dalam Java 14. 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