Junior
Co víš o třídě Object?
sobes.tech AI
Odpověď od AI
java.lang.Object je kořenová třída v hierarchii tříd v jazyce Java. Každá třída dědí implicitně od Object.
Hlavní metody:
equals(Object obj): Porovnává aktuální objekt s jiným objektem na rovnost. Ve výchozím nastavení porovnává reference.hashCode(): Vrací hash kód objektu. Používá se v kolekcích založených na hash tabulkách (napříkladHashMap,HashSet). Pokud jsou dva objekty podleequals()stejné, jejichhashCode()musí být stejné.toString(): Vrací řetězcovou reprezentaci objektu. Ve výchozím nastavení vrací název třídy +@+ hash kód ve formátu hexadecimálního čísla. Často je přepsáno pro poskytnutí informativnějšího výstupu.getClass(): Vrací objektClass, který reprezentuje třídu objektu za běhu.notify(): Obnoví provádění vlákna, které čeká na monitoru tohoto objektu.notifyAll(): Obnoví provádění všech vláken čekajících na monitoru tohoto objektu.wait()/wait(long timeout)/wait(long timeout, int nanos): Způsobí, že aktuální vlákno čeká, dokud jiné vlákno nevolánotify()nebonotifyAll()na tomto objektu nebo neuplyne stanovený čas. Může být voláno pouze v synchronizovaných blocích nebo metodách.clone(): Vytvoří a vrátí kopii tohoto objektu. Vyžaduje implementaci rozhraníCloneable.finalize(): Je voláno garbage collectorem před odstraněním objektu. Nedoporučuje se používat kvůli nepředvídatelnosti.
Příklad přepsání metod equals() a 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 +
'}';
}
}
Třída Object poskytuje základní mechanismy, které jsou nezbytné pro práci s objekty v jazyce Java, jako je porovnávání, hashování, synchronizace vláken a získávání informací o třídě.