jdk5以前,对象保存到集合中就会失去其特性,取出时通常要程序员手工进行类型的强制转换,这样不可避免就会引发程序的一些安全性问题。jdk5中的泛型允许程序员在编写集合代码时,就限制集合的处理类型,从而把原来程序运行时可能发生问题,转变为编译时的问题,以此提高程序的可读性和稳定性(尤其在大型程序中更为突出)。
使用泛型时,泛型类型必须为引用类型,不能是基本数据类型。
注意:泛型是提供给javac编译器使用的,它用于限定集合的输入类型,让编译器在源代码级别上,就挡住向集合中插入非法数据。但编译器编译完带有泛型的Java程序后,生成的class文件中将不再带有泛型信息,以此使程序运行效率不受到影响,这个过程称之为“擦除”。

泛型的基本术语,以ArrayList为例:<>念typeof

  • ArrayList中的E称为类型参数变量
  • ArrayList中的Integer称为实际类型参数
  • 整个ArrayList称为泛型类型
  • 整个ArrayList称为参数化的类型(ParameterizedType)

用泛型时,如果两边都使用到泛型时,两边的泛型必须要一样。 只用一边也可以。如:
泛型(Genetic)_第1张图片