集册 Java实例教程 重新实现equals()和hashCode()方法的智能点类

重新实现equals()和hashCode()方法的智能点类

欢马劈雪     最近更新时间:2020-01-02 10:19:05

594
提示:您可在线编辑运行本教程的实例 - 运行实例,去试试!
重新实现equals()和hashCode()方法的智能点类
public class Main {/**来自 n o w j a v a . c o m**/

  public static void main(String[] args) {

    Point pt1 = new Point(10, 10);

    Point pt2 = new Point(10, 10);

    Point pt3 = new Point(12, 19);

    Point pt4 = pt1;


    System.out.println("pt1 == pt1: " + (pt1 == pt1));

    System.out.println("pt1.equals(pt1): " + pt1.equals(pt1));


    System.out.println("pt1 == pt2: " + (pt1 == pt2));

    System.out.println("pt1.equals(pt2): " + pt1.equals(pt2));


    System.out.println("pt1 == pt3: " + (pt1 == pt3));/** 时代Java - nowjava.com 提 供 **/

    System.out.println("pt1.equals(pt3): " + pt1.equals(pt3));


    System.out.println("pt1 == pt4: " + (pt1 == pt4));

    System.out.println("pt1.equals(pt4): " + pt1.equals(pt4));

  }

}


class Point {

  private int x;

  private int y;


  public Point(int x, int y) {

    this.x = x;

    this.y = y;

  }


  /* Re-implement the equals() method */

  public boolean equals(Object otherObject) {

    // Are the same?

    if (this == otherObject) {

      return true;

    }


    // Is otherObject a null reference?

    if (otherObject == null) {

      return false;

    }


    // Do they belong to the same class?

    if (this.getClass() != otherObject.getClass()) {

      return false;

    }


    // Get the reference of otherObject in a SmartPoint variable

    Point otherPoint = (Point) otherObject;


    // Do they have the same x and y co-ordinates

    boolean isSamePoint = (this.
展开阅读全文