1.简述
CharSequence是String的父类,但List<CharSequence>不是List<String> 的父类。同样的,Class<CharSequence>也不是Class<String>的父类。
为了反映泛型类所持有元素的继承关系,可以用到泛型的边界。
void fun(){ List<String> list=new ArrayList<>(); //下行会报错.CharSequence是String的父类但List<CharSequence>不是List<String> 的父类。 //List<CharSequence> list1=list; //下行报错 //List<? super CharSequence> list2=list; //下行不报错 List<? extends CharSequence> list3=list; }<? entends A>,可以get,可以调用A类的方法。
<? super A>,可以set。
因为擦除移除了类型信息,所以能用无界泛型参数 (即?)调用的方法只是那些可以用Object调用的方法。
泛型中的extends
它将泛型参数限制为某个类型子集,那么就可以调用该类族的一些方法。泛型参数表中的extends
泛型类的extends
把第32行做些改变,会有如下报错:
