黑马程序员技术交流社区

标题: 关于instancesOf和泛型疑问!! [打印本页]

作者: 聂益飞    时间: 2013-3-24 22:59
标题: 关于instancesOf和泛型疑问!!
本帖最后由 聂益飞 于 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-24 23:08
看你这程序是有必要的,如果传入的不是Person,那样就没有比较的价值了,所以这句是有存在的意义的!
作者: 范德农    时间: 2013-3-24 23:31
不知道你的具体语境是什么,一般引用类型的equals()都是复写Object的equals()方法,所以形参必须还是Object,因此,在这里泛型是不适用的(这个我记得老毕视频有讲)。所以instanceof还是有必要的。既然你问的是关于equals问题,再顺便插一句,equals()中判断类型的话,不是所有情况都适用 instanceof的,当判断是否内容相同时判断标准偏向父类的共性时,instanceof是适合的,但如果标准是偏向子类的自己定制的特点时,这时,instanceof明显就不适用了,这时候用getClass()更好一点(我记得CoreJava在这方面有详细具体的介绍,上面内容肯定讲的比我详细,有时间可以参看一下)。
作者: 崔宝东    时间: 2013-3-26 15:36
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就没有意义了;




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2