# java程序为什么要有泛型?
只要是面向对象的编程语言都逃离不掉泛型这个概念?
如:C#、java、rust、javaScript都有泛型。那么泛型的存在是为了解决什么问题的呢?泛型在程序的世界中扮演这什么重要的角色?
# 面试题的学习目标
- 什么是泛型?——泛型的前世与今生。
- 为什么java要引入泛型这个东西?
- java的泛型解决了什么样的问题?
# 泛型基本概念
泛型—— 一种可以接收数据类型的数据类型。
# 没有泛型java程序存的问题
我们都知道,继承是面向对象的三大特性之一,比如在我们向集合中添加元素的过程中add()方法里填入的是Object类,而Object又是所有类的父类,这就产生了一个问题——添加的类型无法做到统一。 由此就可能产生在遍历集合取出元素时类型不统一而报错问题。
例如:我向一个ArrayList集合中添加Person类的对象,但是不小心手贱添加了一个Boy类的对象,这就会导致如下结果

传统的添加元素的方式(没有泛型的时候)不能对加入到集合ArrayList中的数据类型进行约束(不安全)。遍历的时候,需要进行类型转换。如果集合中的数据量较大,对效率有影响。 这就极大地降低了程序的健壮性,因此设计者针对此问题引入了泛型!