当前位置: 代码迷 >> J2EE >> 有关泛型以及collections.sort()方法的有关问题
  详细解决方案

有关泛型以及collections.sort()方法的有关问题

热度:871   发布时间:2016-04-17 23:48:18.0
有关泛型以及collections.sort()方法的问题
先贴代码:(这个是Name类,下面要用到)



然后是测试程序和结果:




我查阅的collections中的sort的方法:




问题一:
我调用sort方法,到底有没有用到Name类中的compareto方法
如果用到:
那为什么他可以使用name中的compareto方法,是怎么来的。
没有用到的话:
那么为什么他能按照先比较第二个字符串,在比较第一个字符串排列。

问题二:
<E extends Comparable> 这是一个泛型,我明白,但Comparable是一个接口,为什么可以extends
我明白< ? extends T>这里面的称为受限通配,表示T或T的一个未知子类型,但这还是子类么?
------解决方案--------------------
问题一:
我调用sort方法,到底有没有用到Name类中的compareto方法
 当然使用到了compareto方法....
那为什么他可以使用name中的compareto方法,是怎么来的。
 它是使用的声明式,函数式风格...使用接口的式调用的..
 
 

问题二:
<E extends Comparable> 这是一个泛型,我明白,但Comparable是一个接口,为什么可以extends
我明白< ? extends T>这里面的称为受限通配,表示T或T的一个未知子类型,但这还是子类么? 
这个T是可以自定义的类型..例如::下面的curType, lastRetType, litype
public static <curType, lastRetType, litype> lastRetType reduceO4d(
litype li, lastRetType iniValue,
Fun_4reduce<curType, lastRetType> fun_4reduce) {
// attilax 老哇的爪子 上午10:14:03 2014-5-15
lastRetType lastVal = null;

if (iniValue != null)
lastVal = iniValue;

if (li instanceof List) {
// if (lastVal == null)
//
// lastVal = new ArrayList();

List<curType> objLi = (List) li;
for (int i = 0; i < objLi.size(); i++) {
lastVal = fun_4reduce.$(objLi.get(i), lastVal);

}
return (lastRetType) lastVal;
}

return null;
}
------解决方案--------------------
引用:
<E extends Comparable> 这是一个泛型,我明白,但Comparable是一个接口,为什么可以extends?
接口不是只能implements吗?

接口和接口间用extends 
  相关解决方案