Junior — Middle
Оё метавонед шарҳи кунед, ки маънои усули equals дар контексти муқоиса кардани объектҳо дар Java чист?
sobes.tech AI
Ҷавоб аз AI
Дар Java, усул equals истифода мешавад барои муқоиса кардани мазмуни ду объект барои баробарӣ. Ба таври пешфарз, агар онро такрор нанависед, усули equals аз синфи Object референсҳоро муқоиса мекунад, яъне санҷиш мекунад, ки оё ҳарду тағирёбанда ба як объект дар хотира ишора мекунанд.
Барои муқоиса кардани объектҳо ба қимат (масалан, ба майдонҳои синф), бояд усули equals-ро такрор нависед. Муҳим аст, ки шартномаи усулро риоя кунед: бояд рефлексивӣ, симметрӣ, транзитивӣ, муттасил ва набояд бо null баробар бошад.
Масали такрорнависии equals дар синфи Person:
public class Person {
private String name;
private int age;
@Override
public boolean equals(Object obj) {
if (this == obj) return true; // муқоиса бо худ
if (obj == null || getClass() != obj.getClass()) return false;
Person other = (Person) obj;
return age == other.age && Objects.equals(name, other.name);
}
@Override
public int hashCode() {
return Objects.hash(name, age);
}
}
Инчунин, equals имкон медиҳад, ки объектҳоро ба мазмун, на ба ишора муқоиса кунед.