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

Alice423 等级 802 0 0

一、Dart中的泛型 泛型方法

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

一般用   T   表示泛型

getData<T>(T value){
      return value;
  }

void main(){  

           getData('你好');

    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});
}
收藏
评论区

相关推荐

Dart中的泛型、泛型方法、泛型类、泛型接口
一、Dart中的泛型 泛型方法 通俗理解:泛型就是解决 类 接口 方法的复用性、以及对不特定数据类型的支持(类型校验) 一般用   T   表示泛型 getData<T(T value){ return
C# 泛型特化
C# 泛型不是 C++ 的模板类,并不支持特化和偏特化,但是使用一些技巧可以在一定程度上达到相同的目的。 原文是 po 在 stackoverflow 上的一个回答:[A: Generic indexer overload specialization](https://www.oschina.net/action/GoToLink?url=https%3
C#泛型
现在的netcore 3.1和最新的.netframework8早已经没有当初那个被人诟病的ArrayList了,但很巧这玩意不得不说,因为它决定了C#团队痛改前非,抛弃过往重新上路,上一段ArrayList案例代码。 public class ArrayList { private object[]
C#非泛型集合和泛型集合的超级详解(转)
C# 泛型集合之非泛型集合类与泛型集合类的对应: ------------------------ ArrayList对应List HashTable对应Dictionary Queue对应Queue Stack对应Stack SortedList对应SortedList ###  转自(https://www.cnblogs.com/cheng
Java 泛型
命名类型参数 推荐的命名约定是使用大写的单个字母名称作为类型参数。这与 C++ 约定有所不同(参阅 附录 A:与 C++ 模板的比较),并反映了大多数泛型类将具有少量类型参数的假定。对于常见的泛型模式,推荐的名称是: K —— 键,比如映射的键。 V —— 值,比如 List 和 Set 的内容,或者 Map 中的值。 E
Java泛型一览笔录
1、什么是泛型? ======== 泛型(Generics )是把类型参数化,运用于类、接口、方法中,可以通过执行泛型类型调用 分配一个类型,将用分配的具体类型替换泛型类型。然后,所分配的类型将用于限制容器内使用的值,这样就无需进行类型转换,还可以在编译时提供更强的类型检查。 2、泛型有什么用? ========= 泛型主要有两个好处: (1)消除显
Java泛型详解
**引言** ------ Java泛型是jdk1.5中引入的一个新特性,泛型提供了编译时的类型检测机制,该机制允许程序员在编译时检测到非法的类型。 泛型是Java中一个非常重要的知识点,在Java集合类框架中泛型被广泛应用。本文我们将从零开始来看一下Java泛型的设计,将会涉及到通配符处理,以及让人苦恼的类型擦除。 **泛型基础** --------
java 泛型详解
对java的泛型特性的了解仅限于表面的浅浅一层,直到在学习设计模式时发现有不了解的用法,才想起详细的记录一下。 本文参考java 泛型详解、Java中的泛型方法、 java泛型详解 1\. 概述 泛型在java中有很重要的地位,在面向对象编程及各种设计模式中有非常广泛的应用。 什么是泛型?为什么要使用泛型? 泛型,即“参数化类型”。一提到参数,最熟
java泛型
一、实现机制 java泛型实现方法为类型擦除,基于这种方法实现的泛型称为伪泛型。 java泛型只在源代码中存在,在编译后的文件中替换为原生类型,并插入强制转换。 (真正的泛型是应该存在于源码、编译后文件、运行期) 二、擦除实例 源码: List<String> testList = new ArrayList<String>();
java泛型总结
###1. 特点, 好处 java1.5后出现 包含1.5版本 泛型的出现 解决程序的安全性 保证程序的一致安全机制 使用泛型 避免了类型的强制类型转换 代码就简单 数据类型只能是 应用类型 **不能使基本类型,且前后保持一致** 泛型的 定义格式: > 集合类<数据类型>变量 = new集合类<数据类型>(); ###2. 定义使用
20175209 《Java程序设计》第八周学习总结
20175209 《Java程序设计》第八周学习总结 ========================== ### 一、教材知识点总结 #### 1.泛型 1.泛型类声明: * 格式 `class People<E>` * People是泛型类名称 * E是泛型列表,可以是任何对象或接口,但不能是基本类型数据
20175209 《Java程序设计》第八周学习总结
20175209 《Java程序设计》第八周学习总结 ========================== ### 一、教材知识点总结 #### 1.泛型 1.泛型类声明: * 格式 `class People<E>` * People是泛型类名称 * E是泛型列表,可以是任何对象或接口,但不能是基本类型数据
Gson解析泛型
1、简单对象我们传入对象Class来将JSON字符串转为对象 private static <T> T fromJson(String result, Class<T> classOfT) { if (result == null) { return null; }
Thinking in java Chapter15 泛型
* 1 与C ++比较 * 2 简单泛型 泛型 类 * 3 泛型 接口 * 4 泛型 方法 * 5 匿名内部类 * 6 构建复杂模型 * 7 * 8 * 9 * 10 “泛型”意思就是:适用于许多许多的类型 <h2 id="1">1 与C++比较 </h2> ------------------------- C
TypeScript Generics(泛型)
软件工程的一个主要部分就是构建组件,构建的组件不仅需要具有明确的定义和统一的接口,同时也需要组件可复用。支持现有的数据类型和将来添加的数据类型的组件为大型软件系统的开发过程提供很好的灵活性。 在C#和Java中,可以使用"泛型"来创建可复用的组件,并且组件可支持多种数据类型。这样便可以让用户根据自己的数据类型来使用组件。 **泛型的简单案例** 首先,

热门文章

Fabric1.4:Go 链码开发与编写

最新文章

Fabric1.4:Go 链码开发与编写