zoukankan      html  css  js  c++  java
  • 这段代码里的Object类型为啥能被强制转换为Comparable接口类型呢?

    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;
                }
            }


      编译器假设你强制类型转换的前提是你已经知道了可以这样做,即 (A)B 就表示 B 是 A 的子类或者 B 实现了 A 接口,
    所以强制类型转换编译器并不会报错。至于 Object 为什么能转化为 Comparable —— 你应该这样想,这意味着某个类 X
    实现了 Comparable 接口,然后 Object 又是所有类的父类,那么 Object obj = x; 肯定是可以,所以 obj 在内存中引用的是对象 x
    ;而 X 又实现了 Comparable,所以当然可以将 obj 引用的 x 转化为一个 Comparable
  • 相关阅读:
    ORACLE的自定义排序
    PDA上一个UDP通讯客户端
    构造
    sort()的使用
    VC2012链接mySql
    宏的一些代码
    试卷
    疑问
    代码1
    vector学习
  • 原文地址:https://www.cnblogs.com/mibin/p/7570662.html
Copyright © 2011-2022 走看看