张晓华的博客

        2005年,最后一场雪,还是下了,虽然凄凉了一些!
posts - 171, comments - 87, trackbacks - 5, articles - 1

关于复写equals的例子

Posted on Monday, July 10, 2006 9:09 AM
package base;

import java.util.Date;

/**
 * 复写equals方法
 * */
public class JavaEquals {
 private int i = 0;
 private String name = "";
 private Date date = new Date();
 
 /**
  * Java规范中复写equals的要求::
  * 1、自反性:对于任意非空引用x,x.equals(x)应返回true
  * 2、对称性:对于任意非空引用x、y,当且仅当y.equals(x)返回true时,x.equals(y)也返回true
  * 3、传递性:对于任意引用x、y、z,如果x.equals(y)返回true且y.equals(z)返回true,那么x.equals(z)应返回true
  * 4、一致性:如x和y引用的对象没有改变,那么对x.equals(y)的重复调用应返回同一结果
  * 5、对任意非空引用x,x.equals(null)应返回false
  * */
 public boolean equals(Object otherObject) {
  if (this == otherObject)
   return true;
  if (null == otherObject)
   return false;
  if (getClass() == otherObject.getClass())
   return true;
  
  JavaEquals javaEquals= null;
  if (otherObject instanceof JavaEquals)
   javaEquals = (JavaEquals)otherObject;
  else
   return false;
  
  return i == javaEquals.i && name.equals(javaEquals.name) && date == javaEquals.date;
 }
 
 public String toString() {
  return getClass().getName();
 }
 
 public static void main(String[] args) throws Exception {
  JavaEquals javaEquals = new JavaEquals();
  System.out.println(javaEquals.equals(null));
  System.out.println(javaEquals.equals(new Date()));
  System.out.println(javaEquals.equals(new JavaEquals()));
  System.out.println(javaEquals.equals(JavaEquals.class.newInstance()));
  System.out.println(javaEquals.equals(new SubJavaEquals()));
  System.out.println(javaEquals.equals(SubJavaEquals.class.newInstance()));
  System.out.println(new SubJavaEquals());
 }
}

class SubJavaEquals extends JavaEquals {
 private int i = 0;
 private String name = "";
 private Date date = new Date();
}

Post Comment

Title  
Name  
Url
Comment   
Protected by Clearscreen.SharpHIPEnter the code you see: