黑马程序员技术交流社区
标题:
关于instancesOf和泛型疑问!!
[打印本页]
作者:
聂益飞
时间:
2013-3-24 22:59
标题:
关于instancesOf和泛型疑问!!
本帖最后由 聂益飞 于 2013-3-26 19:35 编辑
public boolean equals(Object obj){
if(this==obj){
return true;
}
if(!(obj instanceof Person)){ //加了泛型之后这里还有必要再进行判断吗?
return false;
}
Person p=(Person)obj;
return this.name.equals(p.name) && this.age==p.age;
}
复制代码
作者:
梁耀今
时间:
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