近期在巩固一下java基础,看了《thinking in java》后,对泛型很多概念性的东西了解不透彻,遂查了一下资料,记录了一下,详细如下:
/**
* <? extends Object>:上边界限定,即实际类型只能为Object或者Object的导出类
* <? super Integer>:下边界限定,即实际类型只能为Integer或者Integer的父类
* 擦除:编译器在编译的时候将会擦除泛型类型,将泛型类型变为实际类型
* 协变:由窄类型向宽类型转换,如:String向Object的转换
* 逆变:由宽类型向窄类型转换,如:Object向String的转换
* T与?的区别:T标识泛型,在new的时候必须带上泛型,如:List<T> list6=new ArrayList<T>();然而List<T> list6=new ArrayList<String>()则会报错
* ?标识通配符,标识任意类型,在new的时候可以带上实际类型后者不带类型,如:List<?> list7=new ArrayList<String>();或者List<?> list7=new ArrayList();然而List<?> list7=new ArrayList<?>()则会报错
*/
List<?> list=new ArrayList<String>();
List<? extends Object> list2=new ArrayList<String>();
List<? extends Object> list3=new ArrayList<Object>();
List<? super Integer> list4=new ArrayList<Number>();
List<? super Object> list5=new ArrayList<Object>();
List<T> list6=new ArrayList<T>();
List<?> list7=new ArrayList<String>();
以上则是相关知识点,对于了解java的泛型有一定的帮助
推荐大家一个Java的学习网站:Java知识学习网,Java资料下载,Java学习路线图,网址:https://www.java1010.com