JAVA高级编程基础自学笔记---泛型

这个知识点比较简单!

别人转过来集合给你用,但是你不确定别人用什么类型,你就不知道强制转换成什么类型,你调用的时候要一个个试,不然你就得问,好多。

基本概念:

顾名思义:广泛的类型,通常情况下集合中可以存放类型的对象,本质上是将这些对象全部看做Object类型放入,因此集合中取出元素时也是Object类型,为了表达元素最真实的数据类型就需要强制类型转换,而强制类型转换可能发生类型转换异常;

为了避免上述错误的发生,从jdk1.5开始提出泛型机制,也就是在集合名称的右侧使用<数据类型>的方式明确要求该集合可以存放的元素类型,若放入其他类型则编译报错。如:

List lt1=new LinkeList();--没有泛型的时候,可以存放人员类型对象,取出就麻烦了(需要强转,还不知道强转哪个,易报错)

List<String> lt1=new LinkeList<String>();--有泛型的好处,就是只能放String类型,否则报错,取出方(便不需要强转)

缺陷:这个集合只能放String或String的子类,(String没有子类,被fianl修饰了)

前后类型要一致,保持一致,要写上,这是规定;

但是从jdk1.7.以后增加了新特性,后面<>的数据类型可以省略(记住不要把尖括号也省略哦),如下:

也叫菱形特性

泛型的本质就是参数化类型。也就是让数据类型作为参数传递,在类、接口和方法的定义过程中,所操作的数据类型被传入的参数指定。

只要就尖括号,不管里面是什么都当做是泛型,但是<E>的 E是什么意思,就是形式参数负责占位,而使用集合时<>中的数据类型相当于实际参数负责给形式参数初始化,当初始化完毕后所有E替换为实际参数表示的类型进行使用。

如:

由于大E支持的数据类型非常广泛,所有叫泛型

哪些类有尖括号<>的就支持泛型,没有的就不支持,注意看文档。

猜你喜欢

转载自blog.csdn.net/bbs11007/article/details/107993862