对于一个给定的方法
public boolean equal(Object obj1, Object obj2) {
return false;
}
其比较规则为:如果两个对象的类型一致(即它们位于继承树的同一分枝上),并且内容一致,则返回true,否则返回false.那么该如何实现这个方法呢?我觉得最难的是如何判断两个对象是否位于继承树的同一分枝上.equals对象继承boolean

解决方案 »

  1.   

    1 判空
    2 instanceof 或者比较getClass()
    3 比较所有字段
      

  2.   

    典型的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) {
        }
    }
      

  3.   

    位于继承树的同一分枝上  指的是两个对象有共同的父类吗?如果是的话,通过obj1.getClass().getSuperclass() == obj2.getClass().getSuperclass()
    判断
      

  4.   


        public boolean equals(Object other) {
            if (other == null) {
                return false;
            }
            if (this.getClass() != other.getClass()) {
                return false;
            }
            return EqualsBuilder.reflectionEquals(this, other, false);
        }
      

  5.   

    重写equals方法的同时,希望对hashcode的方法也去重写,理论上这样要求...
      

  6.   

    最简单的方法就是,通过eclipse自动生成equals方法和hashcode的方法,这样比较起来绝对没问题。