Dart中的泛型、泛型方法、泛型类、泛型接口

一、Dart中的泛型 泛型方法

通俗理解:泛型就是解决 类 接口 方法的复用性、以及对不特定数据类型的支持(类型校验)

一般用   T   表示泛型

1getData<T>(T value){ 2 return value; 3 } 4 5void main(){  

           getData<String>('你好');

1 print(getData<int>(12)); 2 3 }

二、Dart中的泛型 泛型类

把下面类转换成泛型类,要求List里面可以增加int类型的数据,也可以增加String类型的数据。但是每次调用增加的类型要统一

1class PrintClass<T>{ 2 List list=new List<T>(); 3 void add(T value){ 4 this.list.add(value); 5 } 6 void printInfo(){ 7 for(var i=0;i<this.list.length;i++){ 8 print(this.list[i]); 9 } 10 } 11 } 12 13 void main() { 14 15 // PrintClass p=new PrintClass<String>(); //指定传入String类型 16 17 // p.add('你好'); 18 19 // p.add('哈哈'); 20 21 // p.printInfo(); 22 23 24 PrintClass p=new PrintClass<int>(); //指定传入int类型 25 26 p.add(12); 27 28 p.add(23); 29 30 p.printInfo(); 31 32}

三、Dart中的泛型 泛型接口

Dart中的泛型接口:

    实现数据缓存的功能:有文件缓存、和内存缓存。内存缓存和文件缓存按照接口约束实现。

    1、定义一个泛型接口 约束实现它的子类必须有getByKey(key) 和 setByKey(key,value)

    2、要求setByKey的时候的value的类型和实例化子类的时候指定的类型一致

1abstract class Cache<T>{ 2 getByKey(String key); 3 void setByKey(String key, T value); 4} 5 6class FlieCache<T> implements Cache<T>{ 7 @override 8 getByKey(String key) { 9 return null; 10 } 11 12 @override 13 void setByKey(String key, T value) { 14 print("我是文件缓存 把key=${key} value=${value}的数据写入到了文件中"); 15 } 16} 17 18class MemoryCache<T> implements Cache<T>{ 19 @override 20 getByKey(String key) { 21 return null; 22 } 23 24 @override 25 void setByKey(String key, T value) { 26 print("我是内存缓存 把key=${key} value=${value} -写入到了内存中"); 27 } 28} 29void main(){ 30 31 32 // MemoryCache m=new MemoryCache<String>(); 33 34 // m.setByKey('index', '首页数据'); 35 36 37 MemoryCache m=new MemoryCache<Map>(); 38 39 m.setByKey('index', {"name":"张三","age":20}); 40} 41
点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

java 泛型详解

对java的泛型特性的了解仅限于表面的浅浅一层,直到在学习设计模式时发现有不了解的用法,才想起详细的记录一下。本文参考java泛型详解、Java中的泛型方法、java泛型详解1\.概述泛型在java中有很重要的地位,在面向对象编程及各种设计模式中有非常广泛的应用。什么是泛型?为什么要使用泛型?泛型,即“参数化类型”。一提到参数,最熟

java泛型

一、实现机制java泛型实现方法为类型擦除,基于这种方法实现的泛型称为伪泛型。java泛型只在源代码中存在,在编译后的文件中替换为原生类型,并插入强制转换。(真正的泛型是应该存在于源码、编译后文件、运行期)二、擦除实例源码:List<StringtestListnewArrayList<String();

Java泛型的使用

泛型的定义:泛型,就是允许在定义类、接口时通过一个标识表示类中某个属性的类型或者是某个方法的返回值及参数类型。这个类型参数将在使用时(例如,继承或实现这个接口,用这个类型声明变量、创建对象时)确定(即传入实际的类型参数,也称为类型实参)。泛型的引入背景:集合容器类在设计阶段或声明阶段不能确定这个容器到底实际存储的是什么类型的对象

Thinking in java Chapter15 泛型

1与C比较2简单泛型泛型类3泛型接口4泛型方法5匿名内部类6构建复杂模型78910“泛型”意思就是:适用于许多许多的类型<h2id"1"1与C比较</h2C