###概述
java泛型是jdk1.5之后的新特性,泛型的本质是参数化乐行,也就是所操作的数据类型被指定为一个参数。这种参数类型可以在类、接口和方法的创建中,分别称为泛型类、泛型接口和泛型方法。我们可以将类型参数看作是使用参数化类型时指定的类型的一个占位符,就像方法的形式参数是运行时传递的值的占位符一样。
###举例
举一个实际的例子
List list = new ArrayList();
list.add("cyyyys");
list.add(99);
for(int i = 0; i < list.size(); i++){
String item = (String)list.get(i);
System.out.println(item);
}
由于ArrayList中可以存放任意类型,我们在list中添加了String类型和Integer类型,但是都是以String的形式使用,所以会出现ClassCastException。

因此我们可以利用泛型做如下改进,这样编译器在编译阶段就会帮我们发现问题。
List<String> list = new ArrayList();
...
//list.add(99); 在编译阶段就会报错
特性
泛型只在编译阶段有效。在编译过程中,正确验证泛型结果后,会将泛型的相关信息擦除,并且在对象进入和离开方法的便捷处添加类型检查和类型转换的方法。即泛型信息不回进入到运行时阶段。