Junior
Ko dara metode equals()?
sobes.tech AI
Atbilde no AI
Metode equals() Java salīdzina divus objektus, lai noteiktu to vienādību.
Pēc noklusējuma (klasē Object) tas pārbauda, vai atsauces uz objektiem ir vienādas (vai tās norāda uz to pašu eksemplāru atmiņā).
Klases var pārdefinēt šo metodi, lai noteiktu loģisko vienādību, pamatojoties uz to saturu (piemēram, divi String objekti tiek uzskatīti par vienādiem, ja tie satur to pašu rakstzīmju secību, pat ja tie ir dažādi eksemplāri).
Pārdefinējot equals(), ir arī nepieciešams pārdefinēt hashCode() metodi, lai ievērotu šo vienošanos: ja divi objekti ir vienādi pēc equals(), tad to hashCode() metodes jāatgriež vienādas vērtības.
Piemērs pārdefinēšanai:
class MyClass {
private int value;
public MyClass(int value) {
this.value = value;
}
@Override
public boolean equals(Object o) {
if (this == o) return true; // Atsauču salīdzināšana
if (o == null || getClass() != o.getClass()) return false; // Null un tipu pārbaude
MyClass myClass = (MyClass) o; // Tipa pārveidošana
return value == myClass.value; // Loģiska salīdzināšana pēc lauka value
}
@Override
public int hashCode() {
return Objects.hash(value); // Hash koda ģenerēšana
}
}