泛型就是解决 类 接口 方法的复用性、以及对不特定数据类型的支持(类型校验)
不指定类型放弃了类型检查。我们现在想实现的是传入什么 返回什么。比如:传入number 类型必须返回number类型 传入 string类型必须返回string类型
getData<T>(T value) {
return value;
}
print(getData<int>(12));
print(getData('value'));
泛型类的用法
class PrintClass<T> {
List list = [T];
void add(T value) {
this.list.add(value);
}
void printInfo() {
for (var i = 0; i < this.list.length; i++) {
print(this.list[i]);
}
}
}
PrintClass p = new PrintClass();//PrintClass<String>();
p.add(11);
p.add('xxx');
p.add(true);
p.printInfo();
Dart中的泛型接口:
abstract class Cache<T> {
getByKey(String key);
void setByKey(String key, T value);
}
class FlieCache<T> implements Cache<T> {
@override
getByKey(String key) {
return null;
}
@override
void setByKey(String key, T value) {
print("我是文件缓存 把key=${key} value=${value}的数据写入到了文件中");
}
}
class MemoryCache<T> implements Cache<T> {
var save = new Map();
@override
getByKey(String key) {
return this.save[key];
}
@override
void setByKey(String key, T value) {
this.save[key] = value;
print("我是内存缓存 把key=${key} value=${value} -写入到了内存中");
}
}
MemoryCache m = new MemoryCache();//如果指定类型,必须传入指定类型
m.setByKey('index', {"name": "张三", "age": 20});
print(m.getByKey("index"));
m.setByKey('home', "age");
print(m.getByKey("home"));
此文章仅做学习记录使用,如有不足之处请各位大神指出,谢谢