当前位置:首页 > 投稿 > 正文内容

如何通俗易懂地理解什么叫泛型?

福瑞号2023-01-24 16:24:09投稿179
今天是刘小爱自学Java的第55天。
感谢你的观看,谢谢你。
话不多说,开始今天的学习:
如何通俗易懂地理解什么叫泛型?-图1
补充学习一个知识点:泛型。
这个概念是在集合中接触到的,因为当时学的有点懵,所以就没有立马写出来。
现在回过头来看,发现还是蛮简单的。
一、泛型的概念
先回顾下集合和数组的区别:
数组长度固定不变,可以存放任意数据类型,但存放的数据类型要一致。集合长度可变,可以存放任意引用数据类型,但存储的数据类型可以不一致。也就是说一个集合既可以存放String类型的数据又可以存放Integer类型数据(int对应的引用数据类型)。
这样就会出现一个问题:
比如说:现在有一个集合,打算存储群里所有人的名字,结果有的人捣乱把年龄也存进去了。
这个时候编译是不会报错的,因为集合本来就可以存放多种数据类型,但是我以为只有名字,也就是字符串。
如何通俗易懂地理解什么叫泛型?-图2
①在Collection集合中添加一个String类型的数据。
②在Collection集合中添加一个Integer类型的数据(18会自动转换成对应的引用数据类型)。
③现在我想统计群里人名都是多少字的,我以为只有字符串,就会将其强转成String并调用String的lenth方法。
④运行报错,因为有一个其他数据类型的数据混进来了,编译时期不能检测到,运行时会出现类转化异常。
所以面对这种问题该怎么办呢?
这种时候,就需要使用到泛型了。
创建集合时先说清楚,只能存放String类型的数据,这时候若是有人捣乱存储其他类型的数据编译就会报错。
等于是将运行时期会发生的异常提前到编译时期了。
所以泛型的作用是一种安全机制,是一种书写规范,它和接口的作用有着一定的类似,都是在制定规则。
如何理解接口?
接口里的抽象方法只有方法名,没有方法体,实现类必须重写该方法说明方法体。
用现实里的一个例子说明就是:语文老师只给你一个题目,你要写一篇800字的作文。
题目名就好比抽象方法,作文就好比实现类重写方法。
所以接口就和作文题目一样是在制定规则。
如何理解泛型?
作文题材不限,记叙文、议论文、诗歌都可以。
但是不能一篇作文既写成记叙文又写成议论文。
一旦你确定了题材(比如说写议论文),那么这篇作文就不能写其他题材了(只能写议论文)想写其他题材,那下一篇作文重新写。
所以什么叫泛型?
就好比作文题材不限,但一次只能写一种题材,至于是什么题材,由我们自己定。
所以本质上泛型它是一个变量,它是需要我们去赋值的。
二、泛型的使用
主要有泛型类、泛型接口、泛型方法以及泛型通配符。
1泛型类
非常常见的ArrayList类就是一个泛型类,看它的源码:
如何通俗易懂地理解什么叫泛型?-图3
①泛型使用格式
修饰符 class 类名<代表泛型的变量> { };
ArrayList类中使用E来代表泛型的变量,E本身并没有含义,任意一个大写字母都可以,A、B、T、W都可以。
②泛型类的使用
在创建对象的时候确定泛型,指定好了后这个对象就只能装指定的数据类型了。
如果要换其他数据类型,就要重新创建该类的对象,重新指定泛型。泛型类有何好处?
③ArrayList的add方法
add方法参数就是一个泛型,也就是说创建对象时确定的是哪个类型,使用add方法就只能添加这个类型了,这就起到了一个千变万化的效果。
2泛型接口
如何通俗易懂地理解什么叫泛型?-图4
①泛型接口格式
修饰符 interface接口名<代表泛型的变量> { }
这次我们自定义一个泛型接口,泛型为A。
②泛型类的使用一
实现类实现接口、同时指定泛型类型。
③泛型类的使用二
实现类实现接口但不指定泛型,这个类也就成了泛型类。
ArrayList类本质上也就是这种情况,它实现了List<E>接口,但是没有指定泛型。
3泛型方法
如何通俗易懂地理解什么叫泛型?-图5
①泛型方法格式
修饰符 <代表泛型的变量> 返回值类型 方法名(参数){ }
②泛型方法使用
调用方法时,确定泛型的类型。
4泛型通配符
现有一个需求:封装一个方法,可以遍历参数为任意类型的ArrayList
如何通俗易懂地理解什么叫泛型?-图6
①两个不同类型的集合
一个集合泛型为String类,一个集合泛型为Integer:
ArrayList<String>list1和ArrayList<Integer> list2是两个不同的类型,如果用常规方法,那要两个方法(方法重载)
②泛型的通配符
不知道使用什么类型来接收的时候,此时可以使用?,?表示未知通配符。
其中泛型通配符还可以这样使用:
<? extends Person>:表示可以传递Person及其子类<? super Person>:表示可以传递Person及其父类注意:
泛型不存在继承关系:ArrayList<Object>list并不是ArrayList<String>list1和ArrayList<Integer>list2的父类,它们三个是三个不同的类型。其中Java里的泛型是一种伪泛型。什么叫伪泛型?
也就是泛型只存在于编译时期,在运行时期会被擦除,这个比较抽象不好说明,了解就好了。真泛型也是有的,但在Java语言里没有,C语言里有。
总结:
如何通俗易懂地理解什么叫泛型?-图7
谢谢你的观看。
如果可以的话,麻烦帮忙点个赞,谢谢你。

扫描二维码推送至手机访问。

版权声明:本文由福瑞号发布,如需转载请注明出处。

本文链接:http://furui.com.cn/49960.html

标签: 泛型是什么

“如何通俗易懂地理解什么叫泛型?” 的相关文章

养父的花样年华剧情(《养父的花样年华》中朗德贵最后的结局是什么)

养父的花样年华剧情(《养父的花样年华》中朗德贵最后的结局是什么)

《养父的花样年华》中朗德贵最后的结局是和连月枝在一起了。 1.《养父的花样年华》是由何群执导的一部乡村励志爱情剧,主演是邢佳栋、铁伟光、程琤、徐唯、范安宜、廉赛。 2.这部剧的背景是上世纪六七十年代,剧情主要讲述了年轻气盛的单身青年朗德贵成为了四个孩子的养父,历经风雨把他们养大成人的故事。 朗德...

中国的东南方(中国最东、南、西、北的位置和城市在哪儿)

中国的东南方(中国最东、南、西、北的位置和城市在哪儿)

1.最东端在135°E多的黑龙江与乌苏里江的主航道汇合处;最东城市抚远市。 抚远市是黑龙江省佳木斯市代管县级市,地处黑龙江、乌苏里江交汇的三角地带,抚远市地处中国陆地最东端,也是中国最早见到太阳的地方。 东、北两面与俄罗斯隔黑龙江、乌苏里江相望,南邻饶河,西接同江。全市边境线长275公里。市政...

观赏鱼的种类图片(最受欢迎的十大观赏鱼)

观赏鱼的种类图片(最受欢迎的十大观赏鱼)

第一名—草金鱼。它是金鱼的祖先,而且没有人去人为改变它的基因,在体质更接近于原生态鱼,比普通的金鱼都要皮实,欢实得多。而且草金鱼属于冷水鱼,一年四季不需要加热棒来加热,也不挑食,只需要喂养普通饲料就可以。草金鱼的互动性也特别好,喜欢与人玩耍,主人走近就会凑到水面,草金鱼鱼体颜色多为鲜艳的红色,十分喜...

专升本政治复习资料(湖北成人高考专升本政治的复习方法)

专升本政治复习资料(湖北成人高考专升本政治的复习方法)

  湖北成人高考专升本考试快要开始了,在成人高考专升本考试中,政治是所有考生的必考科目,下面我们就一起来看看湖北成人高考专升本政治的复习方法。   1、整理逻辑框架   湖北成人高考专升本政治考试其实不难,大家在进行复习的时候,需要对复习资料上的重难点有个核心的掌握。想要学会一门知识,就需要大家自...

伦敦现在几点(pep小学英语四年级下课文及翻译)

伦敦现在几点(pep小学英语四年级下课文及翻译)

Unit One 第一单元 My school 我的学校 主情境图Look! That's the playground. 看!那是操场。 Where's the library? 图书馆在哪里? It's next to the art room. 在美术教室的旁边。 Oh, no! That'...

杨烁个人资料(杨烁童星今年几岁了)

杨烁个人资料(杨烁童星今年几岁了)

说道明星杨烁,很多人第一时间想到的都是小包总杨烁,但小编今天要来为大家介绍的是童星歌手杨烁。杨烁在7岁的时候,就发行了自己的单曲幸福的一家,并且活跃在各大卫视节目时候。杨烁童星今年几岁了?杨烁童星长大后的照片曝光,小编今天就来为大家起底一下,介绍一下童星杨烁的个人资料。 童星杨烁照片 杨烁20...