Junior
Για ποιο λόγο χρησιμοποιούνται οι μέθοδοι equals() και toString() στη Java;
sobes.tech AI
Απάντηση από AI
Η μέθοδος equals() χρησιμοποιείται για τη σύγκριση αντικειμένων όσον αφορά την λογική ισοδυναμία, δηλαδή καθορίζει αν δύο αντικείμενα αντιπροσωπεύουν την ίδια τιμή ή οντότητα, ανεξάρτητα από το αν είναι το ίδιο φυσικό αντικείμενο στη μνήμη.
Η μέθοδος toString() χρησιμοποιείται για την απόκτηση μιας αναπαράστασης σε συμβολοσειρά του αντικειμένου. Από προεπιλογή, επιστρέφει μια συμβολοσειρά που περιέχει το όνομα της κλάσης και τον κωδικό hash της, αλλά συχνά υπερισχύει για να παρέχει μια πιο ενημερωτική περιγραφή της κατάστασης του αντικειμένου.
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; // Σύγκριση αναφορών
if (o == null || getClass() != o.getClass()) return false; // Έλεγχος τύπου και null
ExampleObject that = (ExampleObject) o; // Μετατροπή τύπου
return id == that.id && // Σύγκριση σημαντικών πεδίων
name.equals(that.name);
}
@Override
public int hashCode() {
// Υπερισχύει το hashCode όταν υπερισχύει το 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");
// Χρήση του equals()
System.out.println("obj1 equals obj2: " + obj1.equals(obj2)); // true - λογικά ισοδύναμα
System.out.println("obj1 equals obj3: " + obj1.equals(obj3)); // false - διαφορετικά αντικείμενα
// Χρήση του toString()
System.out.println("obj1 toString(): " + obj1.toString()); // Θα εμφανίσει την αναπαράσταση σε συμβολοσειρά του αντικειμένου
}
}