import java.util.*;class Employee implements Comparable{
private String name;
private double salary;
private Date hireDay;

public Employee(String n,double s,int year,int month,int day){
name = n;
salary = s;
GregorianCalendar calendar = new  GregorianCalendar(year,month,day);
  hireDay = calendar.getTime();
}

public boolean equals(Object otherObject){

if(this == otherObject) return true;

if(otherObject == null) return false;

if(getClass() != otherObject.getClass()) return false;

Employee other = (Employee)otherObject;

return name.equals(other.name) && salary == other.salary && hireDay.equals(other.hireDay);
}

public int hashCode(){
return 7 * name.hashCode() + 11 * new Double(salary).hashCode() + 13 * hireDay.hashCode();
}

  
  public int compareTo(Object o){
   Employee o = (Employee) o;
   if(salary > o.salary) return -1;
 if(salary < o.salary) return 1;
 return 0;
  }

}public class ObjTest {
public static void main(String[] args){
Employee hua1 = new Employee("xiaohua",100000,1980,8,28);
Employee hua2 = hua1;
Employee hua3 = new Employee("xiaohua",100000,1980,8,28);
Employee xue = new Employee("xue",1000000,1984,2,14);

System.out.println("hua1 == hua2: " + (hua1 == hua2));
System.out.println("hua1 == hua3: " + (hua1 == hua3));
System.out.println("hua1 equals hua2 :" + hua1.equals(hua2));
System.out.println("hua1 equals hua3 :" + hua1.equals(hua3));

System.out.println("hua1 hashCode: " + hua1.hashCode());  

System.out.println(xue.compareTo(hua1));  
}
}

解决方案 »

  1.   

    错误: 已在compareTo(Object)中定义o
      

  2.   

    用另一个变量名吧
    Employee o1 = (Employee) o;
     if(salary > o1.salary) return -1;
     if(salary < o1.salary) return 1; 
    return 0;
      

  3.   

    C:\JAVATEST\ObjTest>javac ObjTest.java
    ObjTest.java:35: 错误: 已在compareTo(Object)中定义o
    Employee o = (Employee) o;
             ^
    1 个错误
      

  4.   

    楼上的,谢谢了。COREJAVA这本书!
    P208 第 58  59 行程序错误!!!!!!!!!!!!!!!!!!!!!!!
    !!!!!!!!!!!!!!!!!!!!!!!!
    !!!!!!!!!!!!!!!!!!!!!!!!
      

  5.   

    已在compareTo(Object)中定义o  我以为那个o是一个句号,晕。
      

  6.   


    大哥  ,你在传参数的时候,  却用object来接收,那是不对的你该把泛型好好看看参数用object接收有问题,   自己  看看泛型    ,个人介意用  Employee 接收…………去看看泛型吧,  很有好处的……
      

  7.   

    Employee o = (Employee) o;这行代码出问题了
    改为Employee oo = (Employee) o;
    比较算法直接用salary.compareTo(oo),Double 类自带了比较器。
      

  8.   

    public int compareTo(Object o){
    Employee o1 = (Employee) o; //这个引用 也定义成o不可以哦,系统不能分辨出是参数o还是 Employee o的o ;if(salary > o1.salary) return -1;
    if(salary < o1.salary) return 1; 
    return 0;
    }
      

  9.   

    兄弟,如果参数不用object的话就不是覆写了,明白?