Junior
Ինչ եք գիտակցում Object դասի մասին?
sobes.tech AI
Պատասխան AI-ից
java.lang.Object հանդիսանում է հիմնական դասը ժառանգության հիերարխիայում Java դասերի։ Ամեն դաս անխուսափելիորեն ժառանգում է Object-ից:
Հիմնական մեթոդները՝
equals(Object obj): Համեմատում է ընթացիկ օբյեկտը այլ օբյեկտի հետ հավասարության համար։ Դեպքային համեմատում է հղումները։hashCode(): Վերադարձնում է օբյեկտի հեշ-կոդը։ Օգտագործվում է հեշ-տախտակների վրա հիմնված հավաքածուներում (օրինակ,HashMap,HashSet)։ Եթե երկու օբյեկտներ հավասար ենequals()-ով, նրանցhashCode()-ները պետք է նույնը լինեն։toString(): Վերադարձնում է օբյեկտի տողային ներկայացումը։ Դեպքային արժեքը՝ վերադառնում է դասի անունը +@+ հեշ-կոդը հեշային տիպում։ Հաճախ վերաշարադրվում է ավելի տեղեկատվական ներկայացում ապահովելու համար։getClass(): Վերադարձնում էClassօբյեկտը, որը ներկայացնում է օբյեկտի դասը ժամանակի ընթացքում։notify(): Վերականգնում է այդ օբյեկտի մոնիտորի վրա սպասող մեկ թելին։notifyAll(): Վերականգնում է բոլոր այն թելերին, որոնք սպասում են այդ օբյեկտի մոնիտորին։wait()/wait(long timeout)/wait(long timeout, int nanos): Պահպանում է ընթացիկ թելին սպասելու, մինչև այլ թելերըnotify()կամnotifyAll()կանչեն կամ լրացվի նշված ժամանակը։ Կոչվում է միայն սինխրոնիզացված բլոկներից կամ մեթոդներից։clone(): Ստեղծում և վերադարձնում է այս օբյեկտի պատճենը։ Պահանջում էCloneableինտերֆեյսի իրագործում։finalize(): Կոչվում է մաքրման հավաքիչի կողմից օբյեկտի հեռացման նախաշեմին։ Չի խորհուրդ տրվում օգտագործել՝ անորոշության պատճառով։
Օրինակ equals() և hashCode()-ի վերաշարադրումը:
class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Person person = (Person) o;
return age == person.age &&
Objects.equals(name, person.name);
}
@Override
public int hashCode() {
return Objects.hash(name, age);
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
Object դասը ապահովում է հիմնական մեխանիզմները, որոնք անհրաժեշտ են օբյեկտների աշխատանքի համար Java-ում՝ համեմատում, հեշավորում, թելերի սինխրոնիզացիա և տեղեկությունների ստացում դասի մասին։