通俗理解就是:
泛型就是解决 类 接口 方法的复用性以及对不特定数据类型的支持(类型校验)
泛型方法
// 泛型方法的定义T getData<T>(T val) {return val;}void main() {// 泛型方法的调用print(getData<String>('lynn'));print(getData<int>(123));print(getData<bool>(true));}
泛型类
class PrintList<T> {List<T> list = [];void add(T val){this.list.add(val);}void printInfo(){for (var i = 0; i < this.list.length; i++) {print(this.list[i]);}}}void main() {PrintList list = new PrintList<int>();list.add(1);list.add(2);list.add(3);list.printInfo();}
泛型接口
// 泛型 接口abstract class Cache<T> {getCache(String key);void setCache(String key , T value);}// 文件缓存class FileCache<T> implements Cache<T> {@overridegetCache(String key) {return key;}@overridesetCache(String key, T value) {print('我是文件缓存 --- key=$key 已存入文件中');}}// 内存缓存class MemoryCache<T> implements Cache<T> {@overridegetCache(String key) {return key;}@overridesetCache(String key, T value) {print('我是内存缓存 --- key=$key 已存入文件中');}}void main() {FileCache fileCache = new FileCache<String>();fileCache.setCache('文件缓存', '文件');// fileCache.setCache('文件缓存', 123); 报错MemoryCache memoryCache = new MemoryCache<int>();memoryCache.setCache('内存缓存', 123);// memoryCache.setCache('内存缓存', '123'); 报错}
