Суббота, 2024-05-18, 14:09:38
Главная Регистрация RSS
Приветствую Вас, Гость
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум » Обучение » Уроки » Реализация clone, equals, hashCode, compareTo, toString
Реализация clone, equals, hashCode, compareTo, toString
CHerryДата: Понедельник, 2013-06-10, 16:24:21 | Сообщение # 1
Генералиссимус
Группа: Администраторы
Сообщений: 141
Репутация: 3732
Статус: Offline
clone() - создание локальной копии объекта. Это защищенный (protected) метод базового класса Object
  • создаем метод и переопределяем его как public
  • добавляем обязательный вызов метода super.clone()
  • делаем "поверхностное копирование:


Код
public MyClass clone() {
Object object = null;
try {
object = super.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
return (MyClass) object;

}
  • добавляем в сигнатуру нашего класса реализацию implements Cloneable это фактически метку, о том что наш класс может быть клонируемым
  • Далее выполняем "глубокое копирование" - производим копирование ссылок для составляющих его объектов, а затем, в свою очередь, для ссылок этих объектов и так далее.


Код
Male male = new Male();
male.setAge(getAge());
male.setName(getName());
male.setSalaryArray(getSalaryArray().clone());
 
CHerryДата: Вторник, 2013-06-11, 00:42:18 | Сообщение # 2
Генералиссимус
Группа: Администраторы
Сообщений: 141
Репутация: 3732
Статус: Offline
Требования к реализации equals() и hashCode()
В частности, метод equals() должен обладать следующими свойствами:
  • Симметричность: Для двух ссылок, a и b, a.equals(b) тогда и только тогда, когда b.equals(a)
  • Рефлексивность: Для всех ненулевых ссылок, a.equals(a)
  • Транзитивность: Если a.equals(b) и b.equals©, то тогда a.equals©
  • Совместимость с hashCode(): Два тождественно равных объекта должны иметь одно и то же значениеhashCode()


Обязательное правило: если переопределил equals — то переопредели и hashCode.

Код

public int MyHashCode() {
    int hashCode = 5 + Arrays.hashCode(salaryArray);
    if (isPlayHockey) {
        hashCode += 1;
    }
    return hashCode;
}
 
Форум » Обучение » Уроки » Реализация clone, equals, hashCode, compareTo, toString
  • Страница 1 из 1
  • 1
Поиск: