java equals 方法

fusongke100 2011-09-20 12:14:37
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,求解释,谢谢。
...全文
120 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
五哥 2011-09-20
  • 打赏
  • 举报
回复
public boolean equals(Test1 o)
你现在调用的还是Object.equals(Object)方法。
public boolean equals(Test1 Object o)


建议重写方法 ,方法定义部分还是去API中复制一份,出来,或者用IDE来生成
  • 打赏
  • 举报
回复
始终是object的类型参数
manyroads 2011-09-20
  • 打赏
  • 举报
回复
用IDE吧,更形象
huntor 2011-09-20
  • 打赏
  • 举报
回复
在 equals方法前加上 @Override可以在编译时捕捉到这种低级错误

@Override public boolean equals(Object o){
...
}
dreamhunter_lan 2011-09-20
  • 打赏
  • 举报
回复
重写的equals方法的要求参数类型是Object类型
重写的话建议在方法前加@Override
shine333 2011-09-20
  • 打赏
  • 举报
回复
public boolean equals(Test1 o)
你现在调用的还是Object.equals(Object)方法。
public boolean equals(Test1 Object o)
chenzunxiong 2011-09-20
  • 打赏
  • 举报
回复
请始终记住,重写equals方法,必须重写hashCode方法
zkongziliuz 2011-09-20
  • 打赏
  • 举报
回复
你的equals方法不是重写的,把equals(Test1 o)中的参数改成equals(Object o)就好了
renxin8358458 2011-09-20
  • 打赏
  • 举报
回复
hashCode 和 equals的关系。
两个对象 equals的时候,hashCode必须相等,但hashCode相等,对象不一定equals。

如果没有重写 hashcode方法,使用Object自带的hashCode,无法保证两个对象equals的时候 hashCode 必须相等的条件。

需要重写hashcode方法.
scrack 2011-09-20
  • 打赏
  • 举报
回复
用 eclipse直接生成
TKD03072010 2011-09-20
  • 打赏
  • 举报
回复

62,616

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧