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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 王洪波 于 2013-5-12 19:26 编辑
  1. public boolean equals(Object obj)
  2.         {
  3.                 if(!(obj instanceof Student))
  4.                         throw new ClassCastException("类型不匹配");  //!!我的疑问所在

  5.                 Student s = (Student)obj;

  6.                 return this.name.equals(s.name) && this.age==s.age;
  7.         }
复制代码
我的理解是这行不用写。理由:
若obj不是Student的实例,即类型不匹配,则在执行下边的语句Student s = (Student)obj时,强转失败虚拟机会自动抛出
ClassCastException异常。
各位大侠意见如何?

评分

参与人数 1技术分 +1 收起 理由
殇_心。 + 1

查看全部评分

5 个回复

倒序浏览
个人理解,单作为一个练习的小程序,楼主的说法是没问题的。
但在开发时,这里一般是要先try{}  catch(){} 语句块的。
毕老师在视频中由于时间的限制,只是做了简化处理,没有按正规方式处理。
回复 使用道具 举报
蔡增辉 发表于 2013-5-12 11:37
个人理解,单作为一个练习的小程序,楼主的说法是没问题的。
但在开发时,这里一般是要先try{}  catch(){}  ...

这里好像用try catch没用。毕老师的意思好像是让程序终止。期待更有深度的回贴。
回复 使用道具 举报
王洪波 发表于 2013-5-12 11:48
这里好像用try catch没用。毕老师的意思好像是让程序终止。期待更有深度的回贴。 ...


我的理解是:正常开发中应该把抛出异常的语句放置在catch(){}中;
这样程序也可以被终止。
这只是小问题,不用太纠结。
回复 使用道具 举报
蔡增辉 发表于 2013-5-12 12:21
我的理解是:正常开发中应该把抛出异常的语句放置在catch(){}中;
这样程序也可以被终止。
这只是小问题 ...

往往小问题中蕴含着大道理。要善于发掘嘛。:P
回复 使用道具 举报
多态。父类引用子类对象。
obj 实际指向的是 Student 对象。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马