Sobes.tech
Junior

À quoi servent les méthodes equals() et toString() en Java?

sobes.tech IA

Réponse de l'IA

La méthode equals() est utilisée pour comparer des objets en termes d'équivalence logique, c'est-à-dire déterminer si deux objets représentent la même valeur ou entité, indépendamment du fait qu'ils soient le même objet physique en mémoire.

La méthode toString() est utilisée pour obtenir une représentation sous forme de chaîne de l'objet. Par défaut, elle renvoie une chaîne contenant le nom de la classe et son code de hachage, mais elle est souvent redéfinie pour fournir une description plus informative de l'état de l'objet.

public class ExampleObject {
    private int id;
    private String name;

    public ExampleObject(int id, String name) {
        this.id = id;
        this.name = name;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true; // Comparaison des références
        if (o == null || getClass() != o.getClass()) return false; // Vérification du type et null
        ExampleObject that = (ExampleObject) o; // Cast du type
        return id == that.id && // Comparaison par champs significatifs
               name.equals(that.name);
    }

    @Override
    public int hashCode() {
        // Redéfinir hashCode est obligatoire lors de la redéfinition de equals
        return Objects.hash(id, name);
    }

    @Override
    public String toString() {
        return "ExampleObject{" +
               "id=" + id +
               ", name='" + name + '\'' +
               '}';
    }

    public static void main(String[] args) {
        ExampleObject obj1 = new ExampleObject(1, "Test");
        ExampleObject obj2 = new ExampleObject(1, "Test");
        ExampleObject obj3 = new ExampleObject(2, "Another");

        // Utilisation de equals()
        System.out.println("obj1 equals obj2: " + obj1.equals(obj2)); // true - logiquement équivalents
        System.out.println("obj1 equals obj3: " + obj1.equals(obj3)); // false - objets différents

        // Utilisation de toString()
        System.out.println("obj1 toString(): " + obj1.toString()); // Affichera la représentation en chaîne de l'objet
    }
}