在网上看了一段代码,没明白错在哪里,请高手指点
public class Pair<T>{
private Object first=null;
    private Object second=null;
    public Pair(Object fir,Object sec){
        this.first=fir;
    this.second=sec;
    }
   public Object getFirst(){
         return this.first;
   }
   public Object getSecond(){
         return this.second;
   }
   public void setFirst(Object fir){
     this.first=fir;
   }
   public boolean equals(T value){
     return (first.equals(value)&&second.equals(value));
   }
}

解决方案 »

  1.   

    你equals 你重写的话肯定要和Object的一样啊。。equals(Object obj)
      

  2.   

    1、就如一楼所说的,如果重写的话 
    public boolean equals(T value){
         return (first.equals(value)&&second.equals(value));
     }
    改成
     public boolean equals(Object value){
         return (first.equals(value)&&second.equals(value));
       }2、如果你想写自己的方法的话,把equals这个方法换个其他名字就行了,比如:
     public boolean equals(T value){
         return (first.equals(value)&&second.equals(value));
       }
    改成
     public boolean equal(T value){
         return (first.equals(value)&&second.equals(value));
       }
      

  3.   

    注意:只要覆盖了object的equals方法,
    就要一起覆盖hashcode()方法,不然用equals方法会在其他发面带来错误的结果
      

  4.   

    effective java2 教条9嘛 哈哈。。
      

  5.   


    +1,尤其是在用类的引用类型做 equals比较的时候要注意