本帖最后由 柯玲 于 2012-7-16 06:54 编辑
今天看了泛型的高新视频,gs能顺利传给c的原因是因为JAVA程序员为保证JDK1.4代码的可读性,JDK1.5有一个规范“参数化类型与原始类型相兼容”
我们只看这三句:GenericShow gs = new GenericShow (); 表明gs是原始类型;
static void fun(GenericShow <? extends Number> c){...}:将泛型类型GenericShow<D>定义为具体的参数化类型GenericShow<? extends Number>
fun(gs); 类似于GenericShow <? extends Number> c=gs,即原始化类型指向参数化类型,gs就能顺利传值给c.
具体的<? extends Number>只是一个实际类型参数,用作具体类型限定GenericShow,与要传入的类型是不是Number及其子类无关 |