Java -- > 泛型深入

 

 

感受泛型的优点:

  • 1、 红色框内的就是泛型,说的直白一点,上边的泛型就是集合的数据类型,它可以约束集合,因为Java作为一种强类型的语言,它希望在对数据操作之前就知道改数据属于何种类型,便于后续对这些数据的操作。比如,我们平时很少会去使用所有数据类型的父类:Object去定义一个变量或者集合,而是去使用具体的数据类型如int、Integer,double、Double等等~~~

  • 2、我们可以看到,如果不使用泛型,集合内可以添加任意类型的元素,如果我们后续遍历这个集合的话,或者对着个集合进行其他强制类型转换等其他操作的话,我们无法确定用何种数据类型进行强制类型转换。

  •  模拟ArrayList集合自定义一个集合MyArrayLIst集合,完成添加和删除功能的泛型设计即可。

 

 

  •  泛型方法:例 --> 模拟实现Arrays.toString()方法,实现传入任意类型的数组都能打印数组的内容:

 

 示例运行结果:

 

  •  泛型接口导学:教务系统,提供一个接口可约束一定要完成数据的增删改查操作:

 

 学生类:

 

 老师类:

 

 这样,通过实现类约束具体类型数据的操作

  • 泛型通配符:案例导学-->开发一个极品飞车的游戏,所有的汽车都能一起参与比赛

 

 对此,或许我们的第一反应是将泛型类型改为Car类型:

 

 但是你会发现,Car类型的集合会导致任意类型Car子类类型的所有车型都无法进入比赛,理论上来说不应这样,因为我们知道:父类里边定义的是所有子类共有的特征,那为什么还有导致这样的现象呢?这里值得一提的一点是:虽然BWM和BENZ都继承了Car,但是ArrayList<BWM>和ArrayList<BENZ>与ArrayList<Car>是没有关系的,说的直白一点:类是类,集合是集合,类有继承关系但集合没有。

 解决方法:通配符-->

 

 所谓通配符:就是在使用集合的时候可以代表一切数据类型。

可是,这也会带来问题:由于?表示可以代表一切数据类型,那么集合中就可以添加任意类型的数据,这会使得集合内部的数据类型过于杂乱,比如:我们可以在定义一个Cat类,则创建的Cat类对象也可以进入这个集合中去:

 

 这不乱套了?解决方法:使用上下限,此处用的上限:? extends Car:?必须是Car或者其子类;下限表示:? super Car:必须是Car或者其父类  (实际开发中泛型下限使用较少):

这样,通过使用 通配符+泛型上限 ,使得泛型作为方法的参数类型即增加了灵活性又不失约束。

posted @   羽梦齐飞  阅读(73)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示