中易网

java,equals()和hashCode()这两个方法是谁的,为什么必须覆盖?

答案:2  悬赏:30  
解决时间 2021-03-21 08:05
如题,看书看到集合,遇到这个问题,请详细解答!
最佳答案
是Object类的。java中所有类都是Object的子类。
没有说必须要覆盖这两个方法。
但是如果覆盖了equals()方法的话,则必须要覆盖hashCode()方法。(这才是关键)
在Object类中定义了hashCode()和equals()方法,Object类的equals()方法按照内存地址比较对象是否相等,因此如果 object1.equals(object2)为true,表明object1变量和object2变量实际上引用同一个对象,那么object1和 object2的哈希码肯定也相同,也就是说object1.hashCode()==object2.hashCode()

如果用户定义的类覆盖了Object类的equals()方法,但是没有覆盖Object类的hashCode()方法,就会导致当 object1.equals(object2)为true 时,而 object1 和 object2的哈希码不一定一样。
所以如果覆盖了equals()方法,也应该覆盖hashCode()方法,并且保证2个相等的object对象的哈希码也一样

如果覆盖了hashCode()方法,可以不用覆盖equals()方法。
可以两个方法都不覆盖。
如果楼主使用hibernate的saveOrUpdate方法的话,pojo类需要覆盖这两个方法,
全部回答
是最终父类object的, equals()是用来拿自己和别的对象做对比用的, hashcode()是返回的对象的地址值 详细请阅读:http://www.cnblogs.com/return/archive/2009/11/06/1597611.html
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
你好,我小时候大概是93年的时候。家里有面石
福州融侨幼儿园怎么样啊
2手电脑主板市场价在多少?
从188起一个一个的数,数12个数最后一个数是多
演池立交/G65(路口)这个地址在什么地方,我要
都说淘宝 良品数码手机一号店的二手iPhone不
恒温调奶器是用开水还是凉水
加入蝶之林是要自己开店吗?
民间航海家汪大渊属于哪个朝代人
生活中你认为是孩子的问题有哪些
房产众筹怎么样?
黑龙江省黑河市逊克县车陆乡邮编是什么?
2018款宝马1系上市售价多少?
福州有到贵州兴义万峰机场的飞机吗
关于质量,下列说法正确的是 A.宇航员从地球
推荐资讯
我有10斤物品寄到自贡市发快递多少钱
朗基·龙堂2号门怎么去啊,有知道地址的么
我在广州地铁站买了张卡,是羊城通普通月票卡
至尊台球(青年路店)地址在什么地方,我要处理
用304材质75X45做架实厚o.8毫米10厘钢化玻璃
2016凯立德最新车载版怎么升级
求动漫 能表现人类丑恶的那种 比如说地狱少女
你对于我来说只是一种奢望翻译成文言文
北京人力资源二级一般什么时候考试?
现有加盟百威母婴超市吗?要加盟费吗?怎么加
韩国海苔怎么吃
铁路住房公积金贷款是在建设银行,那么个人信
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?