06.泛型 generices
·
一、使用dart自带的泛型
集合等。
main(List<String> args) {
var l = <String>[];
l.add('aaa');
l.add('bbb');
l.add('ccc');
print(l);
var m = <int, String>{};
m[1] = 'aaaa';
m[2] = 'bbbb';
m[3] = 'cccc';
print(m);
}
[aaa, bbb, ccc]
{1: aaaa, 2: bbbb, 3: cccc}
容器对象,在创建对象时都可以定义泛型类型。
二、泛型函数
K addCache<K, V>(K key, V val) {
print('$key -> $val');
return val;
}
main(List<String> args) {
var key = addCache('url', 'https://wiki.doucafecat.tech');
print(key);
}
url -> https://wiki.doucafecat.tech
https://wiki.doucafecat.tech
三、泛型类
给泛型添加限制,不是任何类型都可以。
class Phone<T> {
final T mobileNumber;
Phone(this.mobileNumber);
}
main(List<String> args) {
var p = Phone<String>('ducafecat');
print(p.mobileNumber);
}
ducafecat
四、泛型限制
1.定义
class AndroidPhone {
void call(String num) {
print('phone number is $num');
}
}
class Phone<T extends AndroidPhone>{
T phone;
Phone(this.phone);
}
class IosPhone {
void call(String num) {
print('phone number is $num');
}
}
2.使用
void main(List<String> arguments) {
AndroidPhone androidPhone = AndroidPhone();
Phone<AndroidPhone> phone = Phone(androidPhone);
phone.phone.call('123456');
IosPhone iosPhone = IosPhone();
//报错,不可用使用,因为IosPhone没有继承AndroidPhone
//Phone<IosPhone> phone2 = Phone(iosPhone);
//phone2.phone.call('123456');
}
更多推荐
所有评论(0)