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, като сравнение, хеширане, синхронизация на нишки и получаване на информация за класа.