泛型与多态

学习目标

通过本集的学习,你将能够:

  • 理解泛型的概念
  • 掌握类型参数
  • 理解协变与逆变

1. 泛型概述

1.1 什么是泛型?

泛型让代码可以处理多种类型,而不需要为每种类型写重复代码。

非泛型(重复代码):
class IntList {
    int get(int index) { ... }
}

class StringList {
    String get(int index) { ... }
}
泛型(代码复用):
class List<T> {
    T get(int index) { ... }
}

List<int> intList;
List<String> stringList;

2. 类型参数

2.1 泛型类

Java 泛型类:
class Box<T> {
    private T item;
    public void set(T item) { this.item = item; }
    public T get() { return item; }
}

Box<Integer> intBox = new Box<>();
intBox.set(42);

2.2 泛型方法

泛型方法:
public static <T> T identity(T x) {
    return x;
}

3. 协变与逆变

3.1 协变

协变:如果 A 是 B 的子类,那么 List 是 List 的子类。

3.2 逆变

逆变:如果 A 是 B 的子类,那么 List 是 List 的子类。

4. 自测问题

  1. 泛型的好处是什么?
  2. 什么是类型参数?
  3. 什么是协变?
  4. 什么是逆变?

5. 下集预告

下一集我们将学习编程语言简史与展望!

参考资料

  • 《程序设计语言:概念与构造》
« 上一篇 并发与并行 下一篇 » 编程语言简史与展望