程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> 重寫-Java的Object的equals方法要求有對稱性,為什麼我的沒有符合對稱性但是可以正常運行

重寫-Java的Object的equals方法要求有對稱性,為什麼我的沒有符合對稱性但是可以正常運行

編輯:編程綜合問答
Java的Object的equals方法要求有對稱性,為什麼我的沒有符合對稱性但是可以正常運行

/**
*我的t.equals(te)為true

  • te.equals(t)為false
  • 為什麼可以正常運行? */ package five;

import java.util.Date;
import java.util.GregorianCalendar;

public class Test3 {

public static void main(String[] args) {
      T3 t=new T3();///name="李楠"
      Te3 te=new Te3();////name="劉洋"
      System.out.println(t.equals(te));//true
      System.out.println("==============================");
      System.out.println(te.equals(t));///false
}

}
class T3{
public boolean equals(Object otherObject){
if(this==otherObject){
System.out.println("1");
return true;
}
if(otherObject==null){
System.out.println("2");
return false;
}
if(!(otherObject instanceof T3)){
System.out.println("4");
return false;
}
T3 other=(T3) otherObject;
return name.equals(other.name) && salary==other.salary && hireDay.equals(other.hireDay);
}
private String name="李楠";
private double salary=50000;
private Date hireDay=new GregorianCalendar(1992,3,3).getTime();
}
class Te3 extends T3{
public void s(){
System.out.println("j");
}
public boolean equals(Object otherObject){
if(!super.equals(otherObject)){
System.out.println("5");
return false;
}
if(otherObject instanceof Te3){
Te3 other=(Te3)otherObject;
return name.equals(other.name) && salary==other.salary && hireDay.equals(other.hireDay);
}
else {
return false;
}
}
private String name="劉洋";
private double salary=50000;
private Date hireDay=new GregorianCalendar(1992,3,3).getTime();

}

最佳回答:


看看這篇文章吧,折騰了幾天。http://blog.csdn.net/u010569227/article/details/10322895

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved