/// 泛型。作用:增加类的复用性。
/// 解决类、接口、方法的复用性、以及对不特定数据类型的支持。
class Cache<T> {
static final Map<String, dynamic> _cached = Map();
// 泛型方法
void setItem(String key, T value) {
_cached[key] = value;
}
T getItem(String key) {
return _cached[key];
}
}
class TestGeneric {
void start() {
Cache<String> cache1 = Cache(); // value必须是String类型。
cache1.setItem('cache1', '11');
String res1 = cache1.getItem('cache1');
Cache<int> cache2 = Cache(); // 必须传value为int类型
cache2.setItem("cache2", 11);
Member<Student> member = Member(Student('','', 10));
print(member.fixedName());
}
}
class Person{}
/// 类型约束,在实现类似通用接口的泛型中,期望的类型是某些特定的类型。这时可以使用类型约束。
class Member<T extends Person> {
T _person; /// 泛型作用:约束参数类型。
Member(this._person);
String fixedName () {
return 'fixed:${_person.name}';
}
}