package test;public class Test1 { private String value =null;
public Test1(String value){
this.value =value;
}
public boolean equals(Test1 o){
if(o==this){
return true;
}
if(o instanceof Test1){
Test1 test1=(Test1) o;
return value.equals(test1.value);
}
return false;
}

public static void main(String[] args){
Test1 t = new Test1("object");
Object to = new Test1("object");

System.out.println(t.equals(to));
}
}
输出就结果是false,求解释,谢谢。

解决方案 »

  1.   

    public boolean equals(Test1 o)
    你现在调用的还是Object.equals(Object)方法。
    public boolean equals(Test1 Object o)
      

  2.   

    重写的equals方法的要求参数类型是Object类型
    重写的话建议在方法前加@Override
      

  3.   

    在 equals方法前加上 @Override可以在编译时捕捉到这种低级错误@Override public boolean equals(Object o){
     ... 
    }
      

  4.   

    public boolean equals(Test1 o)
    你现在调用的还是Object.equals(Object)方法。
    public boolean equals(Test1 Object o)
    建议重写方法 ,方法定义部分还是去API中复制一份,出来,或者用IDE来生成
      

  5.   

    http://blog.csdn.net/tkd03072010/article/details/6706526
    看看这个
      

  6.   

    hashCode 和 equals的关系。 
    两个对象 equals的时候,hashCode必须相等,但hashCode相等,对象不一定equals。 如果没有重写 hashcode方法,使用Object自带的hashCode,无法保证两个对象equals的时候 hashCode 必须相等的条件。需要重写hashcode方法.
      

  7.   

    你的equals方法不是重写的,把equals(Test1 o)中的参数改成equals(Object o)就好了
      

  8.   

    请始终记住,重写equals方法,必须重写hashCode方法