Sobes.tech
Junior — Middle

Дар кадом ҳолатҳо бояд усули equals-ро дар Java барқарор кунед барои муқоисаи дурустии объектҳо?

sobes.tech AI

Ҷавоб аз AI

Javaда equals методуң қайта жазылуы керек, эгер сиз өзүңүздүн классыңыздын объектилеринин өзгөчө барабарлык критерийлерин аныктагыңыз келсе, алар Objectте ишке ашырылган стандарттык шилтемеге салыштырмалуу башкача.

Бул өзгөчө маанилүү, эгер сиздин классыңыздын объектилери логикалык жактан барабар деп эсептелсе, белгилүү талаалар дал келсе, мисалы, Person классынын объектилери аты жана туулган күнү дал келсе, барабар деп эсептелет.

equals методун кайра жазуу керек, анткени:

  • Объектилерди мазмуну боюнча туура салыштыруу.
  • HashSet же HashMap сыяктуу топтомдордун туура иштешин камсыз кылуу, алар equals колдонуп элементтердин уникалдуулугун аныктайт.

equals методун кайра жазганда, бул методдор ортосундагы келишимди сактоо үчүн hashCode методун да кайра жазуу маанилүү.

equals жана hashCode методдорунун мисалдары:

@Override
public boolean equals(Object obj) {
    if (this == obj) return true;
    if (obj == null || getClass() != obj.getClass()) return false;
    Person person = (Person) obj;
    return Objects.equals(name, person.name) && Objects.equals(birthDate, person.birthDate);
}

@Override
public int hashCode() {
    return Objects.hash(name, birthDate);
}