如何比较自定义的对象,请大家发发言

dgsrest 2003-10-09 04:11:42
如何比较自定义的对象,缺省的equals()却不把对象的各个属性都进行比较,就只返回两个对象进行等值操作==的结果值。
如果要重写equals()方法,怎写好?
还有其他好想法吗?
...全文
24 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
dgsrest 2003-10-10
  • 打赏
  • 举报
回复
你好,怎样重载equals hashCode toString方法阿
knight_qmh 2003-10-09
  • 打赏
  • 举报
回复
重载equals hashCode toString方法
George. Luo 2003-10-09
  • 打赏
  • 举报
回复
overload method -equals
207 2003-10-09
  • 打赏
  • 举报
回复
equals()方法应该有其
自反性:x.equals(x)一定为true
对称性: x.equals(y)为true当且仅当y.equals(x)也为真
传递性:x.equals(y)为true,y.equals(z)为true,那么x.equals(z)一定为true
一致性: 调用了若干次,返回的值应该都是相同的
谨慎性:x.equals(null)一定返回false,也会可能抛出异常


public class Equals2 {
int int1;
SomeClass obj1;

/** 构造函数 */
public EqualsDemo(int i, SomeClass o) {
int1 = i;
obj1 = o;
}

public EqualsDemo() {
this(0, new SomeClass());
}

/** 典型的equals方法*/
public boolean equals(Object o) {
if (o == null) // 谨慎性
return false;
if (o == this) // 优化
return true;

// Castable to this class?
if (!(o instanceof EqualsDemo))
return false;

EqualsDemo other = (EqualsDemo)o; // 类型转换

// compare field-by-field
if (int1 != other.int1) // 直接比较
return false;
// 用equals方法进行比较
if (!obj1.equals(other.obj1))
return false;
return true;
}
}

62,612

社区成员

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

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