本节目标

  • 使用泛型
  • 定义泛型
  • 限制泛型

环境

  • Dart 2.1.0

泛型使用

1
2
3
4
5
6
7
8
9
10
11
12
13
main(List<String> args) {
var l = List<String>();
l.add('aaa');
l.add('bbb');
l.add('ccc');
print(l);

var m = Map<int, String>();
m[1] = 'aaaa';
m[2] = 'bbbb';
m[3] = 'cccc';
print(m);
}

很多的容器对象,在创建对象时都可以定义泛型类型。

泛型函数

1
2
3
4
5
6
7
8
9
main(List<String> args) {
var key = addCache('a00001', 'val.....');
print(key);
}

K addCache<K, V>(K key, V val) {
print('${key} ${val}');
return key;
}

泛型可以用在一个函数的定义

构造函数泛型

1
2
3
4
5
6
7
8
9
main(List<String> args) {
var p = Phone<String>('abc00000011111');
print(p.mobileNumber);
}

class Phone<T> {
final T mobileNumber;
Phone(this.mobileNumber);
}

这是大多数情况下使用泛型的场景,在一个类的构造函数中

泛型限制

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
main(List<String> args) {
var ad = AndroidPhone();
var p = Phone<AndroidPhone>(ad);
p.mobile.startup();
}

class Phone<T extends AndroidPhone > {
final T mobile;
Phone(this.mobile);
}

class AndroidPhone {
void startup() {
print('Android Phone 开机');
}
}

通过 extends 关键字 可以限定你可以泛型使用的类型

代码

参考


© 猫哥

https://ducafecat.tech