Maison >Java >javaDidacticiel >Comment générer automatiquement les méthodes equals() et hashCode() à l'aide de la classe Records en Java 14

Comment générer automatiquement les méthodes equals() et hashCode() à l'aide de la classe Records en Java 14

PHPz
PHPzoriginal
2023-07-31 13:52:511411parcourir

Comment générer automatiquement les méthodes equals() et hashCode() à l'aide de la classe Records en Java 14

En programmation Java, nous avons souvent besoin d'écrire des méthodes equals() et hashCode() pour nos classes. Ces deux méthodes sont très importantes lorsqu’il s’agit de codes d’égalité et de hachage d’objets. Pour simplifier ce processus, Java 14 introduit une nouvelle classe Records. La classe Records fournit un moyen simplifié d'écrire les méthodes equals() et hashCode(), et l'implémentation de ces deux méthodes peut être automatiquement générée en fonction des variables membres de la classe. Cet article explique comment utiliser la classe Records dans Java 14 pour générer automatiquement les méthodes equals() et hashCode().

Tout d’abord, regardons un exemple simple. Supposons que nous ayons une classe nommée Person, qui comporte deux variables membres : le nom et l'âge. Nous voulons pouvoir comparer deux objets Person pour vérifier leur égalité et générer leurs codes de hachage.

Avant Java 14, nous devions écrire manuellement les méthodes equals() et hashCode(), comme indiqué ci-dessous :

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);
    }
}

Le code ci-dessus implémente les méthodes equals() et hashCode() de la classe Person, mais la logique a besoin à écrire manuellement. Comparez les variables membres pour l'égalité et générez des codes de hachage.

Maintenant, utilisons la classe Records pour simplifier ce processus. Nous pouvons directement utiliser le mot-clé Records pour définir une classe et spécifier ses variables membres. Ensuite, la classe Records générera automatiquement pour nous des implémentations des méthodes equals() et hashCode(). Dans ce cas, nous pouvons utiliser le code suivant pour définir la classe Person :

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

Oui, c'est aussi simple que cela ! Avec une seule ligne de code, nous définissons une classe Records et obtenons automatiquement l'implémentation des méthodes equals() et hashCode().

Maintenant, vérifions-le :

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
    }
}

Comme nous pouvons le voir, en utilisant la classe Records, nous pouvons facilement comparer l'égalité de deux objets Person et générer leurs codes de hachage. La méthode equals() de la classe Person comparera automatiquement l'égalité des deux variables membres name et age, et la méthode hashCode() générera automatiquement un code de hachage basé sur le nom et l'âge.

De plus, la classe Records fournit également un constructeur, que nous pouvons utiliser pour instancier des objets et accéder à leurs valeurs via des variables membres. Par exemple, nous pouvons accéder au nom et à l'âge d'un objet Person via person.name et person.age.

Pour résumer, c'est un moyen très simple et pratique d'utiliser la classe Records pour générer automatiquement les méthodes equals() et hashCode() en Java 14. Il nous suffit de définir une classe Records avec une seule ligne de code, puis nous pouvons facilement comparer l'égalité des objets et générer des codes de hachage. Cette méthode générée automatiquement simplifie grandement l’écriture de code et améliore l’efficacité du développement. Pour cette raison, la classe Records est devenue une fonctionnalité très utile dans Java 14.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn