Java八股(泛型)
什么是泛型
泛型是 Java 编程语言中的一个重要特性,它允许类、接口和方法在定义时使用一个或多个类型参数,这些类型参数在使用时可以被指定为具体的类型。
泛型的主要目的是在编译时提供更强的类型检查,并且在编译后能够保留类型信息,避免了在运行时出现类型转换异常。
为什么需要泛型
如果存在一段方法相同,只是参数类型不同的代码则会出现:
1 | private static int add(int a, int b) { |
可以发现,上述代码都是实现了a+b这个逻辑,但是根据传入的参数类型不同和返回值类型不同,我们不得不写成三个add方法。这里涉及了方法的重载,由虚拟机来更具传入的类型来分辨到底属于哪一个方法。
但是有了泛型,我们就可以将这三个方法整合为一个:
1 | private static <T extends Number> double add(T a, T b) { |
使用泛型进行类型检查
当我们创建一个list集合:
1 | List list = new ArrayList(); |
应为List集合的默认元素都是Object类型,所以不管什么String还是double类型还是具体的对象,都可以存到list中,由此我们可以发现如果我们希望这个list是一个特定类型的list就必须要对其中的元素做约束:
1 | List<String> list = new ArrayList<String>(); |