首先泛型被称为“参数化类型”,所谓的参数化就是说像参数那样在真正使用的时候进行传参一样决定泛型到底是什么类型。
那么其次进行追本朔源说一下为什么需要泛型。在1.0和1.1的时候应该是没有泛型的概念的,当时的出现了集合包的前身,后来到1.2集合包出现了好多种类的集合,为了能让集合复用,使得代码利用最大化,所以使用了Java的上溯的特性,(因为Java是单根结构的,也就是在Java中所有的类都是继承自Object类的。)那么将集合中存储的类型上溯为Object,这样所有类型都可以使用集合。特别方便。但是取出集合中对象进行操作的时候,发现这时只能识别出这个类型为Obeject,不能识别它为之前的类型,而且也使用不了之前类型中的方法进行操作该对象。当然我们可以使用Java中的下溯类型,但这要求我们确切知道该类型到底是什么,并且下溯类型和运行时检查都需要额外的运行时间,所以Java就想出了这样的一个“参数化类型”,在集合中存储类型的时候,既能在编译的时候保证集合中存储类型为同一种类型,而且在取出集合中类型进行操作的时候也不需要再进行下溯和运行时检查。