关于equals()方法的问题

Storm-Shadow 2013-04-17 12:16:53
对于一个给定的方法
public boolean equal(Object obj1, Object obj2) {
return false;
}
其比较规则为:如果两个对象的类型一致(即它们位于继承树的同一分枝上),并且内容一致,则返回true,否则返回false.那么该如何实现这个方法呢?我觉得最难的是如何判断两个对象是否位于继承树的同一分枝上.
...全文
281 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
lvzg_005 2013-04-17
  • 打赏
  • 举报
回复
建议重写ojbect的equals方法
hack517 2013-04-17
  • 打赏
  • 举报
回复
最简单的方法就是,通过eclipse自动生成equals方法和hashcode的方法,这样比较起来绝对没问题。
佳为 2013-04-17
  • 打赏
  • 举报
回复
重写equals方法的同时,希望对hashcode的方法也去重写,理论上这样要求...
woshi2sha 2013-04-17
  • 打赏
  • 举报
回复
重写equals方法就行了。
  • 打赏
  • 举报
回复
重写object的equals就行了。
scbb 2013-04-17
  • 打赏
  • 举报
回复

    public boolean equals(Object other) {
        if (other == null) {
            return false;
        }
        if (this.getClass() != other.getClass()) {
            return false;
        }
        return EqualsBuilder.reflectionEquals(this, other, false);
    }
Ganymede 2013-04-17
  • 打赏
  • 举报
回复
位于继承树的同一分枝上 指的是两个对象有共同的父类吗?如果是的话,通过
obj1.getClass().getSuperclass() == obj2.getClass().getSuperclass()
判断
Inhibitory 2013-04-17
  • 打赏
  • 举报
回复
典型的equals写法
public class Hello {
    private int sn;

    @Override
    public boolean equals(Object other) {
        // [[1]]
        if (other == null) {
            return false;
        }

        // [[2]]
        if (this.getClass() != other.getClass()) {
            return false;
        }

        // [[3]]
        Hello o = (Hello) other;
        return this.sn == o.sn;
    }

    public static void main(String[] args) {
    }
}
shine333 2013-04-17
  • 打赏
  • 举报
回复
1 判空 2 instanceof 或者比较getClass() 3 比较所有字段

62,616

社区成员

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

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