一、Dart中的泛型 泛型方法
通俗理解:泛型就是解決 類 接口 方法的復用性、以及對不特定數據類型的支持(類型校驗)
一般用 T 表示泛型
getData<T>(T value){
return value;
}
void main(){
getData<String>('你好');
print(getData<int>(12)); }
二、Dart中的泛型 泛型類
把下面類轉換成泛型類,要求List里面可以增加int類型的數據,也可以增加String類型的數據。但是每次調用增加的類型要統一
class PrintClass<T>{
List list=new 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]);
}
}
}
void main() {
// PrintClass p=new PrintClass<String>(); //指定傳入String類型
// p.add('你好');
// p.add('哈哈');
// p.printInfo();
PrintClass p=new PrintClass<int>(); //指定傳入int類型
p.add(12);
p.add(23);
p.printInfo();
}
三、Dart中的泛型 泛型接口
Dart中的泛型接口:
實現數據緩存的功能:有文件緩存、和內存緩存。內存緩存和文件緩存按照接口約束實現。
1、定義一個泛型接口 約束實現它的子類必須有getByKey(key) 和 setByKey(key,value)
2、要求setByKey的時候的value的類型和實例化子類的時候指定的類型一致
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>{
@override
getByKey(String key) {
return null;
}
@override
void setByKey(String key, T value) {
print("我是內存緩存 把key=${key} value=${value} -寫入到了內存中");
}
}
void main(){
// MemoryCache m=new MemoryCache<String>();
// m.setByKey('index', '首頁數據');
MemoryCache m=new MemoryCache<Map>();
m.setByKey('index', {"name":"張三","age":20});
}
