泛型与多态
学习目标
通过本集的学习,你将能够:
- 理解泛型的概念
- 掌握类型参数
- 理解协变与逆变
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. 自测问题
- 泛型的好处是什么?
- 什么是类型参数?
- 什么是协变?
- 什么是逆变?
5. 下集预告
下一集我们将学习编程语言简史与展望!
参考资料
- 《程序设计语言:概念与构造》