Sobes.tech
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-ում՝ համեմատում, հեշավորում, թելերի սինխրոնիզացիա և տեղեկությունների ստացում դասի մասին։