Sobes.tech
Junior — Middle

Чӣ гуна муқоисаи объектҳоро барои баробарӣ тавассути усули equals иҷро мекунӣ?

sobes.tech AI

Ҷавоб аз AI

Барои муқоисаи дурустии объектҳо дар Java тавассути усули equals, бояд ин усулро дар синфи худ такрор кунед, бо дарназардошти ҳамаи майдонҳои муҳим, ки баробарии объектҳоро муайян мекунанд. Тавсияҳои умумӣ:

  • Санҷед, ки объект null набошад.
  • Санҷед, ки объектҳо аз синфи якхела бошанд.
  • Ҳама майдонҳое, ки ба баробариро таъсир мерасонанд, муқоиса кунед.

Масалан барои синфи Person:

@Override
public boolean equals(Object obj) {
    if (this == obj) return true; // санҷиши баробарии ишора
    if (obj == null || getClass() != obj.getClass()) return false; // санҷиши null ва синф
    Person other = (Person) obj;
    return Objects.equals(name, other.name) && age == other.age;
}

Ҳамчунин тавсия дода мешавад, ки hashCode-ро ҳам такрор кунед, вақте ки equals-ро такрор мекунед, то дар коллексияҳо дуруст кор кунад.