/**
* 泛型的作用和定义
* 定义:泛型本质是指类型参数化。意思是允许在定义类、接口、方法时使用类型形参,当使用时指定具体类型,所有使用该泛型参数的地方都被统一化,保证类型一致。如果未指定具体类型,默认是Object类型。集合体系中的所有类都增加了泛型,泛型也主要用在集合。
* 1.使用泛型可以很好的避免使用Object导致转换类型的异常,泛型使编译器可以在编译期间对类型进行检查以提高类型安全,减少运行时由于对象类型不匹配引发的异常。
*2.面向对象思想,类型的参数化,就是可以把类型像方法的参数那样传递。
* 分类:有界泛型 就是在类型参数部分指定extends或super关键字,这里的extends也含有implements的功能,分别用上限或下限来限制类型范围,从而限制泛型的类型边界
* <T extends Animal>//限定T是Animal的子类
* <T super Pig >//限定T是Dog的父类
* <T extends Object&Serializable>
* 多个限定时我们可以使用&来进行分割,这时关键词只能使用extends。与多重继承类似,这里只有一个类其他都是接口。
* ==通配符==
* T,J,K,V,E 等泛型字母有类型
* ? 未知类型 类型参数赋予不确定值,任意类型(只能声明在类型,方法参数上,不能定义在泛型类上)
* ==注意==
* 泛型没有多态 不能使用基本类型 不能再静态属性上使用泛型 数组没有泛型
*
*/