Junior
Kam naudojami metodai equals() ir toString() Java kalboje?
sobes.tech AI
Atsakymas iš AI
equals() metodas naudojamas objektų palyginimui loginiai ekvivalentumui, tai yra nustatyti, ar du objektai atstovauja tą patį reikšmę ar esmę, nepriklausomai nuo to, ar jie fiziškai yra tas pats objektas atmintyje.
toString() metodas naudojamas gauti objekto eilutės reprezentaciją. Paprastai jis grąžina klasės pavadinimą ir jos hash kodą, tačiau dažnai jis perrašomas, kad pateiktų išsamesnį objekto būsenos aprašymą.
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; // nuorodų palyginimas
if (o == null || getClass() != o.getClass()) return false; // tipų ir null patikrinimas
ExampleObject that = (ExampleObject) o; // tipų konvertavimas
return id == that.id && // reikšmių palyginimas
name.equals(that.name);
}
@Override
public int hashCode() {
// hashCode perrašymas būtinas kartu su 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()` naudojimas
System.out.println("obj1 equals obj2: " + obj1.equals(obj2)); // tiesa - loginiai ekvivalentai
System.out.println("obj1 equals obj3: " + obj1.equals(obj3)); // klaidinga - skirtingi objektai
// `toString()` naudojimas
System.out.println("obj1 toString(): " + obj1.toString()); // objekto eilutės reprezentacija
}
}