泛型:没有泛型之前,我们在向一个集合中添加元素时,不管什么类型都可以向其中添加。有了泛型集合,那么只能向其中添加一种数据类型,如果不是,编译器会报错,而且取出数据时,也不用强制类型转换。
1)泛型是提供给编译器使用的,当编译完成后,编译器会去泛型化,所以泛型集合只能挡住源程序的非法插入,所以可以通过反射向其中添加其他类型的元素。
2)参数化的类型与原始类型关系:相互兼容,编译器警告;他们之间没有继承关系,否则报错;数组元素不能使用参数化的类型。
擦除:Java的泛型类似于C++中的模板,但是这种类似仅限于表面,因为Java的泛型完全是在编译器中实现的,用于编译器的类型检查和类型推断,然后生成普通的非泛型字节码。仅使用泛型保证类型安全,生成字节码前将其擦除。扩展虚拟机指令集支持泛型是JVM厂商无法接受的。
泛型的一些基本含义:
1.ArrayList<E>:泛型类型
2.E:类型变量,类型参数
3.ArrayList<Integer>:参数化的类型
4.Integer:类型参数实例,实际类型参数
5.<>:typeof
6.ArrayList:原始类型
|
|