为了账号安全,请及时绑定邮箱和手机立即绑定

这段代码里的Object类型为啥能被强制转换为Comparable接口类型呢?明明Object类型没有实现它呀

这段代码里的Object类型为啥能被强制转换为Comparable接口类型呢?明明Object类型没有实现它呀

慕神8447489 2019-03-01 10:49:27
看高琪Java300集第124集时发现了这个问题: 这段代码里的Object类型为啥能被强制转换为Comparable接口类型呢?明明Object类型没有实现它呀,为啥编译能通过? 萌新求大神指点!谢谢! if(((Comparable)arr[i]).compareTo(arr[i+1])==0){ 整个方法的代码如下 public static void sort(Object[] arr){ boolean sorted= true; int len = arr.length; for(int j=0;j<len-1;j++){ sorted = true; for(int i=0;i<len-1-j;i++){ if(((Comparable)arr[i]).compareTo(arr[i+1])==0){ Object temp = arr[i]; arr[i] = arr[i+1]; arr[i+1] = temp; sorted = false; } } if(sorted){ break; } }
查看完整描述

3 回答

?
湖上湖

TA贡献2003条经验 获得超2个赞

传入的对象数组中的对象肯定实现了Comparable,不然运行时会报错的

查看完整回答
反对 回复 2019-03-01
?
30秒到达战场

TA贡献1828条经验 获得超6个赞

Object 是所有对象的父(祖先)类,一个实现了某接口的类一定是 Object 的子孙类,从父类强制转换为子类在语法上是允许的。如果实际这个对象是子类对象,那么在运行时这个转换就成功了,但如果不是,就会抛出 ClassCastException

查看完整回答
反对 回复 2019-03-01
  • 3 回答
  • 0 关注
  • 348 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信