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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 路途遥远 中级黑马   /  2015-6-15 21:18  /  621 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

如何重写 equals (); 为啥要重写啊???

4 个回复

倒序浏览
因为Object类中equals方法的功能不能满足日常使用,所以有需要要重写成自己需要的功能,这个在集合中比较有用
回复 使用道具 举报
你这个问题应该是学习视频中Collection中的那部分,之所以要重写equals方法,是因为它默认提供的方法是判断对象是否相同,你想要的是name,age都不同才能判断两人是否是同一个人,每次new一个新对象这里程序自己判断的是每次new每次对象都不同,这时候就要自己重写方法,加入判断条件才能达到自己想要的目的。
回复 使用道具 举报
默认equals在比较两个对象时,是看他们是否指向同一个地址的。但有时,我们希望两个对象只要是某些属性相同就认为他们的quals为true。比如:Person p1 = new Person(1,"name1");Person p2 = new Perso(1,"name1");如果不重写equals的话,他们是不相同的,所以我们要重些equals,判断只要他们的id和名字相同equals就为true,在一些集合里有时也这样用,集合里的contain也是用equals来比较
回复 使用道具 举报
因为equals方法在底层经常被类似contains方法调用,或者在集合中,会被底层调用
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马