本节目标
环境
泛型使用
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
邮箱 ducafecat@gmail.com / 微信 ducafecat / 留言板 disqus