Junior
Na čo sa v Jave používajú metódy equals() a toString()?
sobes.tech AI
Odpoveď od AI
Metóda equals() sa používa na porovnanie objektov z hľadiska logickej ekvivalencie, teda určuje, či dva objekty predstavujú rovnakú hodnotu alebo entitu, bez ohľadu na to, či sú fyzicky rovnakým objektom v pamäti.
Metóda toString() sa používa na získanie reťazcovej reprezentácie objektu. Predvolene vracia reťazec obsahujúci názov triedy a jej hash kód, ale často je prepísaná, aby poskytla informatívnejší popis stavu objektu.
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; // Porovnanie odkazov
if (o == null || getClass() != o.getClass()) return false; // Kontrola typu a null
ExampleObject that = (ExampleObject) o; // Typové pretypovanie
return id == that.id && // Porovnanie podľa významných polí
name.equals(that.name);
}
@Override
public int hashCode() {
// Prepísanie hashCode je povinné pri prepísaní 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");
// Použitie equals()
System.out.println("obj1 equals obj2: " + obj1.equals(obj2)); // true - logicky ekvivalentné
System.out.println("obj1 equals obj3: " + obj1.equals(obj3)); // false - rôzne objekty
// Použitie toString()
System.out.println("obj1 toString(): " + obj1.toString()); // Zobrazí reťazcovú reprezentáciu objektu
}
}