private static <E> void qsort(E[] array, int begin, int end, Comparator<? super E> cmp){}
这个是别人定义的一个函数,我想问的是
在关键字static 和函数名qsort之间的应该是返回类型吧?为什么有2个?一个<E>和void?虽然void是返回空,但这里也相当于是有2种返回类型吧?怎么理解?
Comparator<? super E> cmp这个我之前自己没有接触过 ,Comparator是容器么?当中的<? super E> 该如何理解?
在线求教!!

解决方案 »

  1.   

    方法签名中的<E>代表此方法使用泛型符号Evoid代表无返回值Comparator<? super E>代表需要传入一个Comparator的对象,其泛型对象必须为E或E的超类Comparator是一个比较器,里面只有一个方法int compareTo(E e1,E e2),这个是用来定义类E的比较逻辑的,具体说明可以去查API,这个接口在java.util包里
      

  2.   

    <E> 是泛型,表示这个是泛型方法,你在方法中声明了一个泛型,不是返回类型,返回类型还是void,然后你在调用的时候可以传任意的类型,参数中的Comparator<? super E> cmp是指Comparator一个接口,然后需要一个类型来约束他,<? super E> 表示这个泛型类继承自E这个类,也就是你前面声明的泛型E
      

  3.   

    方法签名中的<E>代表此方法使用泛型符号E这句意思就是说<E>这个声明我在这个方法里用<E>来表示泛型么?可不可以理解为如果这里的E全部都改成D也是一样的效果的?