泛型类
泛型接口中介绍了泛型接口的定义和使用,本节我们介绍泛型类的定义和使用。如 Map
的键值对就是使用泛型类来定义的。
可以看一下 Map
类型中的键值对 Node
类型就可以使用泛型类来定义:
public open class Node<K, V> where K <: Hashable & Equatable<K> {
public var key: Option<K> = Option<K>.None
public var value: Option<V> = Option<V>.None
public init() {}
public init(key: K, value: V) {
this.key = Option<K>.Some(key)
this.value = Option<V>.Some(value)
}
}
由于键与值的类型有可能不相同,且可以为任意满足条件的类型,所以 Node
需要两个类型形参 K
与 V
,K <: Hashable, K <: Equatable<K>
是对于键类型的约束,意为 K
要实现 Hashable
与 Equatable<K>
接口,也就是 K
需要满足的条件。对于泛型约束,详见泛型约束章节。