# 第 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 类,其中元素的类型由类型参数指定。这样,当您从列表中检索元素时,就不需要进行强制类型转换。编译器会自动检查类型,并在必要时插入强制类型转换。

泛型还可以用于创建 泛型方法泛型接口 。它们提供了一种灵活的方法来重用代码,并且可以与不同类型的对象一起使用。