博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Dart泛型
阅读量:4520 次
发布时间:2019-06-08

本文共 3063 字,大约阅读时间需要 10 分钟。

/*通俗理解:泛型就是解决 类 接口 方法的复用性、以及对不特定数据类型的支持(类型校验)*///只能返回string类型的数据  // String getData(String value){  //     return value;  // }  //同时支持返回 string类型 和int类型  (代码冗余)  // String getData1(String value){  //     return value;  // }  // int getData2(int value){  //     return value;  // }//同时返回 string类型 和number类型       不指定类型可以解决这个问题  // getData(value){  //     return value;  // }//不指定类型放弃了类型检查。我们现在想实现的是传入什么 返回什么。比如:传入number 类型必须返回number类型  传入 string类型必须返回string类型   // T getData
(T value){ // return value; // } getData
(T value){ return value; }void main(){ // print(getData(21)); // print(getData('xxx')); // getData
('你好'); print(getData
(12));}
//集合List 泛型类的用法//案例:把下面类转换成泛型类,要求List里面可以增加int类型的数据,也可以增加String类型的数据。但是每次调用增加的类型要统一//  class PrintClass{//       List list=new List
();// void add(int value){// this.list.add(value);// }// void printInfo(){ // for(var i=0;i
{ List list=new List
(); void add(T value){ this.list.add(value); } void printInfo(){ for(var i=0;i
(); // p.add('你好'); // p.add('哈哈'); // p.printInfo(); PrintClass p=new PrintClass
(); p.add(12); p.add(23); p.printInfo(); // List list=new List(); // list.add(12); // list.add("你好"); // print(list); // List list=new List
(); // // list.add(12); //错误的写法 // list.add('你好'); // list.add('你好1'); // print(list); // List list=new List
(); // // list.add("你好"); //错误写法 // list.add(12); // print(list);}
/*Dart中的泛型接口:    实现数据缓存的功能:有文件缓存、和内存缓存。内存缓存和文件缓存按照接口约束实现。    1、定义一个泛型接口 约束实现它的子类必须有getByKey(key) 和 setByKey(key,value)    2、要求setByKey的时候的value的类型和实例化子类的时候指定的类型一致*/  // abstract class ObjectCache {  //   getByKey(String key);  //   void setByKey(String key, Object value);  // }  // abstract class StringCache {  //   getByKey(String key);  //   void setByKey(String key, String value);  // }  // abstract class Cache
{ // getByKey(String key); // void setByKey(String key, T value); // }abstract class Cache
{ getByKey(String key); void setByKey(String key, T value);}class FlieCache
implements Cache
{ @override getByKey(String key) { return null; } @override void setByKey(String key, T value) { print("我是文件缓存 把key=${key} value=${value}的数据写入到了文件中"); }}class MemoryCache
implements Cache
{ @override getByKey(String key) { return null; } @override void setByKey(String key, T value) { print("我是内存缓存 把key=${key} value=${value} -写入到了内存中"); }}void main(){ // MemoryCache m=new MemoryCache
(); // m.setByKey('index', '首页数据'); MemoryCache m=new MemoryCache
(); m.setByKey('index', {"name":"张三","age":20});}

 

转载于:https://www.cnblogs.com/loaderman/p/11026889.html

你可能感兴趣的文章
awk使用
查看>>
ASP.NET Razor 视图引擎编程参考
查看>>
Vue 基础篇
查看>>
malloc_free_new_delete
查看>>
Python中的open和codecs.open
查看>>
开发Servlet的方法(2)
查看>>
asp.net mvc 伪静态添加
查看>>
\Process(sqlservr)\% Processor Time 计数器飙高
查看>>
ServletConfig讲解
查看>>
struts2配置默认Action
查看>>
EA类图与代码同步
查看>>
Spring集成MyBatis01 【推荐使用】、springMVC中文乱码和json转换问题
查看>>
Android Studio 智能感知无效
查看>>
vs2005/vs2008 快捷键【转】
查看>>
javascript 日常
查看>>
Android打开相机进行人脸识别,使用虹软人脸识别引擎
查看>>
打印沙漏
查看>>
腾讯物联TencentOS tiny上云初探
查看>>
nginx 安装
查看>>
C#中upd分包与发送,已经实现全部代码
查看>>