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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 聂益飞 高级黑马   /  2013-3-24 22:59  /  1521 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 聂益飞 于 2013-3-26 19:35 编辑
  1. public boolean equals(Object obj){
  2.         if(this==obj){
  3.                 return true;
  4.         }

  5.                 if(!(obj instanceof Person)){            //加了泛型之后这里还有必要再进行判断吗?
  6.                 return false;
  7.         }
  8.         Person p=(Person)obj;
  9.         return this.name.equals(p.name) && this.age==p.age;
  10. }
复制代码

点评

如果问题未解决,请继续追问回复者,如果问题已经解决,请将分类改为“已解决”,谢谢  发表于 2013-3-26 12:19

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

3 个回复

倒序浏览
看你这程序是有必要的,如果传入的不是Person,那样就没有比较的价值了,所以这句是有存在的意义的!

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
不知道你的具体语境是什么,一般引用类型的equals()都是复写Object的equals()方法,所以形参必须还是Object,因此,在这里泛型是不适用的(这个我记得老毕视频有讲)。所以instanceof还是有必要的。既然你问的是关于equals问题,再顺便插一句,equals()中判断类型的话,不是所有情况都适用 instanceof的,当判断是否内容相同时判断标准偏向父类的共性时,instanceof是适合的,但如果标准是偏向子类的自己定制的特点时,这时,instanceof明显就不适用了,这时候用getClass()更好一点(我记得CoreJava在这方面有详细具体的介绍,上面内容肯定讲的比我详细,有时间可以参看一下)。

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
01.public boolean equals(Object obj){

02.        if(this==obj){

03.                return true;

04.        }

05.

06.                if(!(obj instanceof Person)){            //加了泛型之后这里还有必要再进行判断吗?

07.                return false;

08.        }
你接收的类型是Object obj),传入的类型不一定是什么类型,但是都是Object 的子类,你这里是需要判断Person的,要是传入非Person就没有意义了;
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马