Junior
Do czego służą metody equals() i toString() w Java?
sobes.tech AI
Odpowiedź od AI
Metoda equals() służy do porównywania obiektów pod kątem ich logicznej równoważności, czyli określa, czy dwa obiekty reprezentują tę samą wartość lub encję, niezależnie od tego, czy są tym samym fizycznym obiektem w pamięci.
Metoda toString() służy do uzyskania reprezentacji tekstowej obiektu. Domyślnie zwraca ona łańcuch zawierający nazwę klasy i jej kod hash, ale często jest nadpisywana, aby dostarczyć bardziej informacyjny opis stanu obiektu.
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; // Porównanie referencji
if (o == null || getClass() != o.getClass()) return false; // Sprawdzenie typu i null
ExampleObject that = (ExampleObject) o; // Rzutowanie typu
return id == that.id && // Porównanie istotnych pól
name.equals(that.name);
}
@Override
public int hashCode() {
// Nadpisanie hashCode jest obowiązkowe przy nadpisywaniu 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");
// Użycie equals()
System.out.println("obj1 equals obj2: " + obj1.equals(obj2)); // true - logicznie równoważne
System.out.println("obj1 equals obj3: " + obj1.equals(obj3)); // false - różne obiekty
// Użycie toString()
System.out.println("obj1 toString(): " + obj1.toString()); // Wyświetli reprezentację tekstową obiektu
}
}