Junior
A cosa servono i metodi equals() e toString() in Java?
sobes.tech AI
Risposta dell'AI
Il metodo equals() viene utilizzato per confrontare gli oggetti in termini di equivalenza logica, cioè determina se due oggetti rappresentano lo stesso valore o entità, indipendentemente dal fatto che siano lo stesso oggetto fisico in memoria.
Il metodo toString() viene utilizzato per ottenere una rappresentazione in stringa dell'oggetto. Per impostazione predefinita, restituisce una stringa contenente il nome della classe e il suo hash code, ma spesso viene sovrascritto per fornire una descrizione più informativa dello stato dell'oggetto.
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; // Confronto delle referenze
if (o == null || getClass() != o.getClass()) return false; // Controllo del tipo e null
ExampleObject that = (ExampleObject) o; // Cast del tipo
return id == that.id && // Confronto sui campi significativi
name.equals(that.name);
}
@Override
public int hashCode() {
// Sovrascrivere hashCode è obbligatorio quando si sovrascrive 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");
// Uso di equals()
System.out.println("obj1 equals obj2: " + obj1.equals(obj2)); // true - logicamente equivalenti
System.out.println("obj1 equals obj3: " + obj1.equals(obj3)); // false - oggetti diversi
// Uso di toString()
System.out.println("obj1 toString(): " + obj1.toString()); // Mostra la rappresentazione in stringa dell'oggetto
}
}