Клас Object

Всі класи є явними або неявними розширеннями класу Object і, таким чином, успадковують його методи Останні діляться на дві категорії: загальні службові та методи, що підтримують потоки Робота з потоками розглядається в розділі 9 У цьому розділі описуються службові методи Object і їх призначення До категорії службових відносяться наступні методи:

public boolean equals(Object obj)

Порівнює обєкт-одержувач з обєктом, на який вказує посилання obj повертає true, якщо обєкти рівні між собою, і false у противному випадку Якщо вам потрібно зясувати, чи вказують два посилання на один і той же обєкт, можете порівняти їх з допомогою операторів == і =, а метод equals призначений для порівняння значень Реалізація методу equals, прийнята в Object за замовчуванням, припускає, що обєкт дорівнює лише самому собі

public int hashCode()

Повертає хеш-код для даного обєкта Кожному обєкту може бути присвоєний певний хеш-код, що використовується при роботі з хеш-таблицями За замовчуванням повертається значення, яке є унікальним для кожного обєкта Воно використовується при збереженні обєктів у таблицях Hashtable, які описані в розділі Клас Hashtable.

protected Object clone() throws CloneNotSupportedException

Повертає дублікат обєкта Дублікатом називається новий обєкт, що є копією обєкта, для якого викликався метод clone Процес дублювання обєктів докладніше розглядається нижче в цьому розділі, в розділі 38

public final Class getClass()

Повертає обєкт типу Class, який відповідає класу даного обєкта Під час виконання програми на Java можна отримати інформацію про клас у вигляді обєкта Class, що повертається методом getClass

protected void finalize() throws Throwable

Завершальні операції з обєктом, здійснювані під час збірки сміття Цей метод був детально описаний в розділі Метод finalize.

Методи hashCode і equals повинні перевизначатися, якщо ви хочете ввести нову концепцію рівності обєктів, що відрізняється від прийнятої в класі Object За умовчанням вважається, що два різних обєкта не рівні між собою, а їх хеш-коди не повинні збігатися

Якщо ваш клас вводить концепцію рівності, при якій два різних обєкта можуть вважатися рівними, метод hashCode повинен повертати для них однакові значення хеш-коду Це відбувається тому, що механізм Hashtable покладається в своїй роботі на повернення методом equals значення true при знаходженні в хеш-таблиці елементу з тим самим значенням Наприклад, клас String перевизначає метод equals так, щоб він повертав значення true при збігу вмісту двох рядків Крім того, в цьому класі перевизначається і метод hashCode – його нова версія повертає хеш-код, який вираховується на підставі вмісту String, і дві однакові рядки мають співпадаючі значення хеш-кодів

Вправа 35

Перевизначите методи equals і hashCode в класі Vehicle

Джерело: Арнольд К, Гослінг Д – Мова програмування Java (1997)

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*