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

看高琪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;
            }
        }
慕神8447489
浏览 349回答 3
3回答

湖上湖

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

30秒到达战场

Object 是所有对象的父(祖先)类,一个实现了某接口的类一定是 Object 的子孙类,从父类强制转换为子类在语法上是允许的。如果实际这个对象是子类对象,那么在运行时这个转换就成功了,但如果不是,就会抛出 ClassCastException
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java