A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

class Person {
        int age ;
        //复写父类的equals方法,实现自己的比较方式
        public boolean equals(Object obj) {
                if(this == obj){
                        return true;
                }
                //判断传递进来的对象是否是Person类型
                if(!(obj instanceof Person)){                            // 如果是Person的两个不同子类的对象调用equals方法比较,也有可能相等!
                        return false;
                }
                //将obj向下转型为Perosn引用,访问其属性
                Person p = (Person)obj;
                return this.age == p.age;
        }
}

=========================================
if(!(obj instanceof Person)){        
                        return false;
                }
  // 如果是Person的两个不同子类的对象调用equals方法比较,也有可能相等!



而eclipse自动生成的方法在这里的处理如下,感觉更严谨!
if(getClass()!=obj.getClass){        
                        return false;
                }

1 个回复

倒序浏览
上面的代码比较的是对象在堆内存中的地址值吧  而下面eclipse生成的是比较方法区中class字节码文件的地址值
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马