为什么要引入泛型
先看一个例子,有如下代码:
1 | public class Demo{ |
输出结果如下:
1 | Exception in thread "main" java.lang.ClassCastException: Student cannot be cast to java.lang.String |
这是一个java中的类型转换异常,发生的原因是我们无法将一个Student
类强转为String
类,因为它们之间没有继承关系。
针对这种问题,java为我们提供了一种叫做泛型的机制,在编译期间就明确集合中存储元素类型,规避掉了这种不安全的转换情景。
修改如下:
1 | public class GenericTest { |
泛型给我们带来了什么
泛型的好处归纳起来,有如下几点:
- 规避了不安全类型转换问题
- 减少IDE警告
- 可以简化代码书写(不用手动进行类型转换)
什么时候可以使用泛型
是否可以使用泛型,具体以API为准;原理上只要带有<E>
标志的类或接口,都可以使用泛型。