泛型的继承和通配符说明 GenericExtends.java
import java.util.ArrayList;
import java.util.List;
/**
* @author 安然的尾巴
* @version 1.0
*/
public class Test {
public static void main(String[] args){
//泛型没有继承性
//List<Object> list = new ArrayList<String>();
List<Object> list1 = new ArrayList<>();
List<String> list2 = new ArrayList<>();
List<AA> list3 = new ArrayList<>();
List<BB> list4 = new ArrayList<>();
List<CC> list5 = new ArrayList<>();
}
// ? extends AA 表示 支持 AA 或者 AA 子类
//规定了泛型的上限
public static void print1(List<? extends AA> c) {
for (Object object : c) {
System.out.println(object);
}
}
//说明: List<?> 表示 任意的泛型类型都可以接受
public static void print2(List<?> c) {
for (Object object : c) { // 通配符,取出时,就是 Object
System.out.println(object);
}
}
// ? super 子类类名 AA:支持 AA 类以及 AA 类的父类,不限于直接父类 比如Object顶级父类也支持
//规定了泛型的下限
public static void print3(List<? super AA> c) {
for (Object object : c) {
System.out.println(object);
}
}
}
class AA{}
class BB extends AA{}
class CC extends BB{}
标签:AA,继承,List,ArrayList,object,通配符,泛型,new
From: https://www.cnblogs.com/lldwb/p/17146716.html