Программирование на Java

       

public int sideA; public int


Пример:

package demo.lang; public class Rectangle { public int sideA; public int sideB; public Rectangle(int x, int y) { super(); sideA = x; sideB = y; } public boolean equals(Object obj) { if(!(obj instanceof Rectangle)) return false; Rectangle ref = (Rectangle)obj; return (((this.sideA==ref.sideA)&&(this.sideB==ref.sideB))|| (this.sideA==ref.sideB)&&(this.sideB==ref.sideA)); } public static void main(String[] args) { Rectangle r1 = new Rectangle(10,20); Rectangle r2 = new Rectangle(10,10); Rectangle r3 = new Rectangle(20,10); System.out.println("r1.equals(r1) == " + r1.equals(r1)); System.out.println("r1.equals(r2) == " + r1.equals(r2)); System.out.println("r1.equals(r3) == " + r1.equals(r3)); System.out.println("r2.equals(r3) == " + r2.equals(r3)); System.out.println("r1.equals(null) == " + r1.equals(null)); } }

Пример 13.1.

Запуск этой программы, очевидно, приведет к выводу на экран следующего:

r1.equals(r1) == true r1.equals(r2) == false r1.equals(r3) == true r2.equals(r3) == false r1.equals(null) == false

Пример 13.2.

В этом примере метод equals() у класса Rectangle был переопределен таким образом, чтобы прямоугольники были равны, если их можно наложить друг на друга (геометрическое равенство).

Большинство стандартных классов переопределяет этот метод, строго следуя всем соглашениям.

Метод public int hashCode() возвращает хеш-код (hash code) для объекта. Хеш-код – это целое число, которое сопоставляется с данным объектом. Оно позволяет организовать хранение набора объектов с возможностью быстрой выборки (стандартная реализация такого механизма присутствует в Java и будет описана в следующей лекции).

Для этого метода также принят ряд соглашений, которым стоит следовать при переопределении:

  • если два объекта идентичны, то есть вызов метода equals(Object) возвращает true, то вызов метода hashCode() у каждого из этих двух объектов должен возвращать одно и то же значение;
  • во время одного запуска программы для одного объекта при вызове метода hashCode() должно возвращаться одно и то же значение, если между этими вызовами не были затронуты данные, используемые для проверки объектов на идентичность в методе equals(). Это число не обязательно должно быть одним и тем же при повторном запуске той же программы, даже если все данные будут идентичны.



Содержание  Назад  Вперед







Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий