java 泛型产生,泛型类,泛型方法,泛型接口,泛型通配符,泛型限制符理解学习

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_33322074/article/details/86510872

一、泛型的产生

为保证程序的安全性。

泛型指明了集合中存储数据的类型<数据类型>

一会存字符串,一会存int类型,会造成数据的安全性问题。如果指明了存储数据的类型, 就不会出现这种问题了。

所谓的泛型就是在collection<数据类型>=new xxxxx;

泛型就是为了保证数据的安全。如果没有泛型那么就会存储所有类型。打印时也有不少问题。

安全隐患;

这个就会产生安全隐患。类型转换异常,Integer类型无法转换成String类型。因为String类型和Integer类型根本无关。

2、添加泛型后

二、泛型类

ArrayList<>

三、泛型方法

注意:首先是创建了一个Integer类型的集合对象。添加了两个Integer类型的数据。目标是要打印出来,但是不能直接调用而array.toString();的目标是将集合中的元素返回一个数组。因此需要用Integer类型的数组来接收,最后将这个数组打印。打印数组使用的是增强for循环。

其中Integer[]数组就属于泛型方法。因为它标记了数组的类型Integer。

四、泛型接口。 

1、带有泛型的接口的格式:

2、实现类有两种

第一种是:实现类先实现接口,不理会泛型。第二种是实现类在实现接口的同时也指定了数据类型。

3、泛型的好处

总结一下泛型好处:

1、不需要强制性转换,增强了安全性。

2、由于使用了泛型,可以通过增强for循环来遍历。

3、引入了泛型,在编译时就能知道错误。

五、泛型通配符

泛型通配符的产生:

创建了两种容器,ArrayList和HashSet并且存储的类型还不同。

如果要遍历这两个容器的内容,就必须先将两个集合放入iterator迭代器中

2、如何让迭代器一次将两个集合的内容遍历完呢?这就用到泛型的通配符。

注意:这种方法只适合与遍历。如果通配符处写String,那么set集合会报错,如果写Integer那么array集合会报错。 

六、泛型是对象如何添加值

泛型是对象,往集合中添加数据时 要用到匿名对象的方式添加,因为泛型是存什么写什么,写什么存什么。

七、泛型的限定

如果光有泛型的通配符还是不够安全的。现在有三个集合,需要遍历的同时可以调用工作方法work()。

如何同时遍历三个集合呢?如果仅仅是用一个通配符

是不行的,因为会产生安全问题。即:

这个也能遍历,但是这个又没有work()方法,故会报错。

这就需要限定符来解决这个问题了

即:让通配符继承Employee三个对象的父类。那么String类型就无法再使用。就不能写了。泛型必须是Employee或者它的子类。

上图为限定符的作用域。

猜你喜欢

转载自blog.csdn.net/qq_33322074/article/details/86510872