Sobes.tech
Junior

Šta znaš o klasi Object?

sobes.tech АИ

Одговор од АИ

java.lang.Object је коренска класа у хијерархији класа Јаве. Свакa класа нејасно наследи од 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() за овај објекат или не истекне наведенo време. Позива се само из синхронизованих блокова или метода.
  • 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 обезбеђује фундаменталне механизме потребне за рад објеката у Јави, као што су поређење, хеширање, синхронизација токова и добијање информација о класи.