如果要通过Arrays.sort给对象排序的话,那么对象必须要实现Comparable,并重写里面的compareTo方法,很明显么,你比较对象肯定需要定义一个比较的规则,这个和接口属性没关系,是这个方法决定的。

解决方案 »

  1.   

    这个就叫多态实现一个接口以后,这个类的实例都相当于具有了这个接口的特性,一个类可以同时实现多个接口你是一个人,可能是个妹子,或者汉子,你上学的话就又是一个学生然后,比如买火车票的时候,要求只有学生能买学生票,但并不管你是妹子还是汉子,这个就叫面向接口的编程同样的,上面的例子Arrays.sort()方法就要求里面的元素都是Comparable的,至于你到底是A类实现的还是B类实现的,它不管
      

  2.   


    接口相当于该类的父类么?
    当然不是,接口可以理解为一个标准、协议性的东西,在Java一个类可以实现多个接口,但一个类只能继承一个类,概念比较抽象,结合代码理解一下。
      

  3.   

    谢谢光环了,我就是对这个报错(Employee cannot be cast to java.lang.Comparable)有所困惑,为什么实现了之后就成了呢,难道实现了接口后,Employee 就can be cast to java.lang.Comparable了?
      

  4.   

    sort函数要求要排序的每个对象都是“可以相互比较的”,而且都要实现Comparable接口。
    换句话说回来,让你自己写程序,你如何比较两个对象的升降顺序?
      

  5.   

    sort(T[] a, Comparator<? super T> c)
    Sorts the specified array of objects according to the order induced by the specified comparator.

    官方API定义了这个参数是必须实现Comparator接口的。