Flutter 泛型 泛型方法 泛型类 泛型接口
目录
泛型简单使用
泛型类的简单使用
泛型接口的使用
通俗理解:泛型就是解决 类 接口 方法的复用性、以及对不特定数据类型的支持(类型校验)
泛型简单使用
main(){print(getData2("XXX"));getData2<String>("XXX");getData2<int>(1);}String getData(String value) {return value;
}//不指定返回类型放弃了类型检查。我们现在想实现的是传入什么 返回什么。
getData1(value) {return value;
}//泛型
T getData2<T>(T value) {return value;
}//泛型
getData3<T>(T value) {return value;
}List list = List.filled(2, "");list[0] = "张三";list[1] = "李四";print(list);List list1 = List<String>.filled(2, "");list1[0] = "张三";list1[1] = "李四";print(list1);List list2 = List<int>.filled(2, 0);list2[0] = 1;list2[1] = 2;print(list2);
泛型类的简单使用
main() {var list3 = MyList();list3.add(1);list3.add(5);print(list3.getList());//可以设置多个类型的数据var list4 = MyList1();list4.add("小飞");list4.add(5);list4.add(true);print(list4.getList());}class MyList {List list = <int>[];void add(int value) {this.list.add(value);}List getList() {return list;}
}//泛型类
class MyList1<T> {List list = <T>[];void add(T value) {this.list.add(value);}List getList() {return list;}
}
泛型接口的使用
/**Dart中的泛型接口:实现数据缓存的功能:有文件缓存、和内缓存。内存缓存和文件缓存按照接口约束实现。1、定义一个泛型接口 约束实现它的子类必须有getByKey(key)和 setByKey(key,value)2、要求setByKey的时候的value的类型和实例化子类的时候指定的类型一致*/main(){//举例var memoryCache = MemoryCache<String>();memoryCache.setBykey("name", "张三");var memoryCache1 = MemoryCache<Map>();memoryCache1.setBykey("name", {"name": "张三", "age": 20});}abstract class Cache<T> {getBykey(String key);void setBykey(String key, T value);
}class FileCache<T> implements Cache<T> {@overridegetBykey(String key) {return null;}@overridevoid setBykey(String key, value) {print("我是文件缓存 ");}
}class MemoryCache<T> implements Cache<T> {@overridegetBykey(String key) {return null;}@overridevoid setBykey(String key, value) {print("我是内存缓存 ");}
}