Sobes.tech
Junior

Ce știi despre clasa Object?

sobes.tech AI

Răspuns de la AI

java.lang.Object este clasa de bază în ierarhia claselor Java. Fiecare clasă moștenește implicit de la Object.

Metode principale:

  • equals(Object obj): Compară obiectul curent cu alt obiect pentru egalitate. În mod implicit, compară referințele.
  • hashCode(): Returnează codul hash al obiectului. Este utilizat în colecții bazate pe tabele hash (de exemplu, HashMap, HashSet). Dacă două obiecte sunt egale conform equals(), codurile lor hash trebuie să fie identice.
  • toString(): Returnează o reprezentare în șir de caractere a obiectului. În mod implicit, returnează numele clasei + @ + codul hash în format hexazecimal. De obicei, este suprascris pentru a oferi o reprezentare mai informativă.
  • getClass(): Returnează un obiect Class care reprezintă clasa obiectului în timpul execuției.
  • notify(): Reia execuția unui fir de execuție care așteaptă pe monitorul acestui obiect.
  • notifyAll(): Reia execuția tuturor firelor de execuție care așteaptă pe monitorul acestui obiect.
  • wait() / wait(long timeout) / wait(long timeout, int nanos): Face ca firul de execuție curent să aștepte până când alt fir de execuție apelează notify() sau notifyAll() pe acest obiect sau până expiră timpul specificat. Poate fi apelat doar din blocuri sau metode sincronizate.
  • clone(): Creează și returnează o copie a acestui obiect. Necesită implementarea interfeței Cloneable.
  • finalize(): Este apelat de colectorul de gunoi înainte de eliminarea obiectului. Nu este recomandat din cauza imprevizibilității.

Exemplu de suprascriere a equals() și 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 +
               '}';
    }
}

Clasa Object oferă mecanisme fundamentale necesare pentru funcționarea obiectelor în Java, precum compararea, hash-ul, sincronizarea firelor și obținerea informațiilor despre clasă.