为什么要有泛型? 泛型能干啥? 泛型的坑?

什么叫泛型?有什么作用?

把类型明确的工作推迟到创建对象或调用方法的时候;

Java泛型设计原则:只要在编译时期没有出现警告,那么运行时期就不会出现ClassCastException异常;

类型参数:
ArrayList<E>中的E称为类型参数变量
ArrayList<Integer>中的Integer称为实际类型参数

泛型类型:
整个称为ArrayList<E>泛型类型

参数化类型:
整个ArrayList<Integer>称为参数化的类型ParameterizedType

为什么要有泛型

可以将类、接口等作为参数 来定义类、接口、 方法。

通常我们将基本数据类型, 引用类型 的值作为参数, 泛型可以用类、接口 类型作为参数。

泛型能干啥

编译期类型检查;增加了代码的健壮性。
不用强制类型转换了;
使程序员能够实现通用算法;比如集合;

定义泛型类、泛型方法、 泛型接口

通配符: 通配符是泛型实现的另外一种方式, 独立于泛型方法存在

那现在咋办???我们是不清楚List集合装载的元素是什么类型的,List<Objcet>这样是行不通的........于是Java泛型提供了类型通配符 ?
public void test(List<?> list){
?号通配符表示可以匹配任意类型,任意的Java类都可以匹配.....

设定通配符下限
List<? extends Number>

设定通配符上限
//传递进来的只能是Type或Type的父类
<? super Type>

值得注意的是:无论是设定通配符上限还是下限,都是不能操作与对象有关的方法,只要涉及到了通配符,它的类型都是不确定的!

如果参数之间的类型有依赖关系,或者返回值是与参数之间有依赖关系的。那么就使用泛型方法
如果没有依赖关系的,就使用通配符,通配符会灵活一些.

泛型擦除

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。