super 与 extends 的区别
public static class Test {
public void add(List<? super B> list1, B s) {
list1.add(s);
}
public void add(List<? super B> list1, C s) {
list1.add(s);
}
public B get(List<? extends B> list2){
return list.get(0);
}
}
static class A{}
static class B extends A{}
static class C extends B{}
为什么list1只能存,且存储的元素只能是B和其子类?
list1是一个容器,存储B或其父类中的一种确定的元素,如果能取,该用哪种类型接收呢?
list1可能是List<B> 或者List<A>其中一,取出的元素不能确认其类型
B和C是B、A共同的子类,根据多态,父类引用可指向子类对象,能装父类的容器,也能装子类
为什么list2只能取,且取到的元素可用B接受?
list2存储B或其子类中一种确定元素,如果能存,存那种?B?C? 其实都是不能确定的
取的话,取出的B或其子类中一种,根据多态,父类引用可指向子类对象,可用B类型接受