variance,中文一般翻译为型变或者变体,是编程领域一个很容易犯错的点。我之前对这个概念也是似懂非懂的,所以这次特地在网上翻了不少资料,好好的研究了一下这个问题,顺便写篇博客介绍一下,假如以后忘了也能很快的想起来。
这里就用最经典的 Java 来作为主要语言,来简单的探讨一下这个问题。
基础
首先我们来创建一些类关系作为演示。示例很简单,我们先创建了动物、猫、狗这几个具有继承关系的类,然后定义了一个泛型类商人,用来买卖这几种动物。
class Animal {
}
class Dog extends Animal {
}
class Cat extends Animal {
}
class Businessman<T> {
public final Deque<T> inventory;
public Businessman() {
this.inventory = new ArrayDeque<>();
}
public Businessman(Collection<T> collection) {
this.inventory = new ArrayDeque<>(collection);
}
public void buy(T t) {
inventory.push(t);
}
public T sell() {
return inventory.pop();
}
}
5/27/23大约 12 分钟