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 обезбеђује фундаменталне механизме потребне за рад објеката у Јави, као што су поређење, хеширање, синхронизација токова и добијање информација о класи.