有许多原因促成了泛型的出现,而最引人注意的一个原因,就是为了创建容器类。
1.什么是泛型
泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法
2.为什么要用泛型
编码的时候,不加泛型是可以的,但是 你从容器中拿出来的时候必须强制类型转换,第一是多敲很多代码,第二极容易发生类型转换错误
![](https://img.haomeiwen.com/i5650276/2a4d643b11d9976a.png)
有泛型就可以将错误前置到编译期
![](https://img.haomeiwen.com/i5650276/0f9a5738b9db4626.png)
3.泛型可以怎么用
应用场景小例子1
现在需要有一个类,存放两个String类型属性,代码如下
![](https://img.haomeiwen.com/i5650276/8c7baf3c86a80c8b.png)
现在我又想要一个类,可以存放两个属性,一个String,一个Integer,OK,我直接改成Object,来啥都不怕
![](https://img.haomeiwen.com/i5650276/d5d57f549a848179.png)
但是这么做每次取出来的都是Object,需要强转回自己传入的类型,如果转错了就会报类转换异常,所以还得记住自己传入了什么类型的元素,比较麻烦,用泛型就可以约定每次传入的类型,取出也不需要强转,
![](https://img.haomeiwen.com/i5650276/6af606cbaa4a88c6.png)
来看一下调用
![](https://img.haomeiwen.com/i5650276/cbb024166076c6cc.png)
在JAVA的虚拟机中并不存在泛型,泛型只是为了完善java体系,增加程序员编程的便捷性以及安全性而创建的一种机制
![](https://img.haomeiwen.com/i5650276/69bdb38be0f6deaf.png)
3.1声明带边界的泛型
![](https://img.haomeiwen.com/i5650276/7e5367afa21d8a91.png)
3.2泛型方法
![](https://img.haomeiwen.com/i5650276/36c0509b53c69344.png)
![](https://img.haomeiwen.com/i5650276/e8154ea30565281c.png)
4.总结
虚拟机中没有泛型,只有普通类和普通方法
所有泛型类的类型参数在编译时都会被擦除
创建泛型对象时请指明类型,让编译器尽早的做参数检查
网友评论