泛型类型的协变、逆变与命令式语言基础
泛型类型的协变与逆变
在Java和C#等语言中,一个类型可能是另一个类型的子类型(例如子类),这就引出了子类型和泛型类型如何相互作用的问题。以 LinkedList 泛型类为例,其代码如下:
class LinkedList<T> {
private Node<T> first, last;
private static class Node<T> {
public Node<T> prev, next;
public T item;
public Node(T item) { this.item = item; }
public Node(T item, Node<T> prev, Node<T> next) {
this.item = item; this.prev = prev; this.next = next;
}
}
public LinkedList() { first = last = null; }
public T get(int index) { return getNode(index).item; }
private Node<T> getNode(int n) {
Node<T> node = first;
for (int i=0; i<n; i++)
超级会员免费看
订阅专栏 解锁全文
38

被折叠的 条评论
为什么被折叠?



