# 第 13 章:随堂复习与企业真题(泛型)
# 一、随堂复习
# 1. 泛型的理解
,泛型参数,使用引用数据类型来赋值。
# 2. 泛型在集合、比较器中的使用(重点)
- 集合:ArrayList、HashMap、Iterator
- 比较器:Comparable、Comparator
# 3. 自定义泛型类 / 泛型接口、泛型方法(熟悉)
- class Order
- public
返回值类型 方法名 (形参列表){} - 具体的细节,见 IDEA 中的笔记。
# 4. 泛型在继承上的体现
1. 类SuperA是类A的父类,则G<SuperA> 与 G<A>的关系:G<SuperA> 和 G<A>是并列的两个类,没有任何子父类的关系。
比如:ArrayList<Object> 、ArrayList<String>没有关系
2. 类SuperA是类A的父类或接口,SuperA<G> 与 A<G>的关系:SuperA<G> 与A<G> 有继承或实现的关系。
即A<G>的实例可以赋值给SuperA<G>类型的引用(或变量)
比如:List<String> 与 ArrayList<String>
# 5. 通配符的使用
- ? 的使用 (重点)
- 以集合为例:可以读取数据、不能写入数据(例外:null)
- ? extends A
- 以集合为例:可以读取数据、不能写入数据(例外:null)
- ? super A
- 以集合为例:可以读取数据、可以写入 A 类型或 A 类型子类的数据(例外:null)
# 二、企业真题
# 1. Java 的泛型是什么?有什么好处和优点?JDK 不同版本的泛型有什么区别?(软 * 动力)
答:
泛型的核心思想:把集合中的内容限制为一个特定的数据类型(虽然暂时未知)
泛型的概念:Java 的泛型是 JDK 1.5
的新特性,泛型的本质是参数化类型,即 不确定的类型
,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为 泛型类
、 泛型接口
、 泛型方法
。
泛型的优点:包括 提高类型安全
和 消除强制类型转换
。
- 泛型的主要目标是提高 Java 程序的类型安全。通过知道使用泛型定义的变量的类型限制,编译器可以在一个高得多的程度上验证类型假设。没有泛型,这些假设就只存在于程序员的头脑中(或者如果幸运的话,还存在于代码注释中)
- 泛型的一个附带好处是,消除源代码中的许多强制类型转换。这使得代码更加可读,并且减少了出错机会。
JDK 不同版本之间泛型的区别:
- jdk7.0 新特性:
ArrayList<String> list = new ArrayList<>(); // 类型推断 |
- 后续版本的新特性:
Comparator<Employee> comparator = new Comparator<>(){} // 类型推断 |
# 2. 说说你对泛型的了解(* 软国际)
泛型是 JDK 1.5
的新特性,它允许在定义类、接口和方法时使用类型参数。类型参数提供了一种方法来 重用相同的代码,处理不同类型的对象
。泛型的主要优点是 提高类型安全
和 消除强制类型转换
。
例如,在没有泛型之前,如果您想编写一个可以接受任何类型对象的列表,您可能会定义一个 List 类,其中元素被存储为 Object 类型。当您从列表中检索元素时,您必须将其强制转换为正确的类型。这不仅容易出错,而且还会使代码难以阅读。
使用泛型创建 泛型类
,您可以定义一个 List 类,其中元素的类型由类型参数指定。这样,当您从列表中检索元素时,就不需要进行强制类型转换。编译器会自动检查类型,并在必要时插入强制类型转换。
泛型还可以用于创建 泛型方法
和 泛型接口
。它们提供了一种灵活的方法来重用代码,并且可以与不同类型的对象一起使用。