Junior
Na co se v Javě používají metody equals() a toString()?
sobes.tech AI
Odpověď od AI
Metoda equals() se používá k porovnání objektů z hlediska logické ekvivalence, tj. určuje, zda dva objekty představují stejnou hodnotu nebo entitu, bez ohledu na to, zda jsou fyzicky stejným objektem v paměti.
Metoda toString() se používá k získání řetězcové reprezentace objektu. Ve výchozím nastavení vrací řetězec obsahující název třídy a její hash kód, ale často je přepsána tak, aby poskytla informativnější 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; // Porovnání odkazů
if (o == null || getClass() != o.getClass()) return false; // Kontrola typu a null
ExampleObject that = (ExampleObject) o; // Přetypování
return id == that.id && // Porovnání významných polí
name.equals(that.name);
}
@Override
public int hashCode() {
// Přepsání hashCode je povinné při přepsání 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žití equals()
System.out.println("obj1 equals obj2: " + obj1.equals(obj2)); // true - logicky ekvivalentní
System.out.println("obj1 equals obj3: " + obj1.equals(obj3)); // false - různé objekty
// Použití toString()
System.out.println("obj1 toString(): " + obj1.toString()); // Zobrazí řetězcovou reprezentaci objektu
}
}