Сообщения

Показаны сообщения с ярлыком "класс Object"

В чем будет проблема, если не переопределять метод hashCode()

Изображение
Некоторые коллекции, такие как HashSet, HashMap или HashTable, используют значение хэш-кода объекта, чтобы узнать, как объект будет храниться в коллекции, и впоследствии хэш-код используется, чтобы помочь найти объект в коллекции. Извлечение хэша участвует: Во-первых, в поиске нужного бакета (корзины) с помощью hashCode() Во-вторых, в поиске в корзине нужного элемента, используя equals() Если hashCode() не переопределен, то реализация по умолчанию в классе Object будет использоваться коллекциями. Эта реализация дает разные значения для разных объектов, даже если они равны согласно методу equals(). Пример: public class Person { private int id; private String name; public Person(int id, String name) { this.name = name; this.id = id; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { t...

Методы класса Object в Java

Изображение
Класс Object является корнем иерархии классов. У каждого класса есть Object как суперкласс. Все объекты, включая массивы, реализуют методы этого класса. Методы класса Object Метод getClass() public final Class getClass() Возвращает класс времени исполнения (runtime class) этого Object. Возвращенный объект Class - это объект, который заблокирован статическими синхронизированными методами представленного класса. Фактический тип результата - Class<? extends |X|> где |X| заменяется статическим типом выражения, для которого вызывается getClass. Например, в этом фрагменте кода не требуется приведение: Number n = 0; Class c = n.getClass(); Метод getClass() возвращает: Объект Class, представляющий класс времени исполнения (runtime class) этого объекта. Метод hashCode public int hashCode() Возвращает значение хэш-кода для объекта. Этот метод поддерживается для использования хэш-таблиц, таких как те, что предоставляются HashMap. Основной контракт метода hashCo...