Java学习之泛型(泛型类、泛型接口、泛型方法、泛型通配符、泛型限定)

一、泛型

1、集合可以存放任意对象,只要把对象存储集合后,那么这时他们就会被提升成object,当我们取出每一个对象,并且进行相应操作时,必须要采用类型转换。

可以理解成一个未知的数据类型。当我们不知道使用什么具体的数据类型时候,可以使用泛型。同样,泛型也可以看成是一个变量,用来接收数据类型。

E e:Element元素

 

T t:Type类型

ArrayList集合在定义的时候,不知道集合中都会存储什么类型的数据,所以类型使用泛型。

2、创建集合对象的时候,就会制定泛型的数据类型。会把数据类型作为参数传递,把String赋值给泛型。

3、使用泛型的好处:

如果创建集合对象时,不使用泛型:这个时候的好处是,集合不使用泛型,则默认的类型是Object类型,可以存储任意类型的数据。但是弊端就是:不安全,会引发异常,因为Object里边就是可以存放不同类型的,会引发类型转换错误。

创建集合时使用泛型:

1、避免了类型转换的麻烦,存储的是什么类型,取出的就是什么类型。

2、把运行期的异常(代码运行之后抛出的异常),提升到了编译器(写代码时候会报错)

弊端:泛型是什么类型,只能存储什么类型的数据。

4、泛型通配符

1、?代表任意的数据类型。

2、不能创建对象使用,只能作为方法的参数使用

5、泛型限定

1、上限限定?extends E,代表使用的泛型只能是E类型的子类/本身

2、下线限定:? super E 代表使用的泛型只能是E类型的父类/本身

Java学习之泛型(泛型类、泛型接口、泛型方法、泛型通配符、泛型限定)