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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黄陂酷歌 中级黑马   /  2014-3-27 16:47  /  832 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. public boolean equals(Object obj){
  2.         if((obj instanceof Student))
  3.                 throw new ClassCastException("类类型不匹配");
  4.         Student s  = (Student)obj;
  5. }
复制代码

上面的代码是毕老师经常写的,关于这段代码我一直有个疑问没有解决
前面if语句已经判断如果obj不是Student就抛异常并不在往下执行
如何if语句没有执行,执行后面的语句,说明obj是Student类型了,问
为什么还要强制转换为Student类型?这不是多此一举吗?

1 个回复

倒序浏览
不是多此一举 , 而是后面还要进行相应的判断 。 你前面obj instanceof Student , 只是判断,是否是其本身及其子类类型, 并不能判断其是一个对象 , 只有进行强转后 , 再调用比如对象属性如: s.getName是否等于this.getName  等等一系列的判断才能确定它们是不是同一个对象 。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马