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

AI 概述
泛型方法泛型类泛型接口 泛型方法 泛型方法可以约束一个方法使用同类型的参数、返回同类型的值,可以约束里面的变量类型。 getData(T value) { return value; } void main() { // print(getData(21)); // print(getData('xxx')); getData('你好'); getData(12); getData(123);...
目录
文章目录隐藏
  1. 泛型方法
  2. 泛型类
  3. 泛型接口

泛型方法

泛型方法可以约束一个方法使用同类型的参数、返回同类型的值,可以约束里面的变量类型。

getData(T value) {
  return value;
}

void main() {
  // print(getData(21));
  // print(getData('xxx'));

  getData('你好');
  getData(12);
  getData(123);
  //getData(123);
}

上面分别依次约束了类型是 String、int、double,最后一个约束了类型是 bool 但是传入了 int,所以编译器会报错:

泛型方法

泛型类

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

class PrintClass {
  List list = new List();
  void add(T value) {
    this.list.add(value);
  }

  void printInfo() {
    for (var i = 0; i < this.list.length; i++) {
      print(this.list[i]);
    }
  }
}

main() {
  PrintClass p = new PrintClass();

  p.add(12);

  p.add(23);

  p.printInfo();

  PrintClass arr = new PrintClass();
  arr.add('aa');
  arr.add('bb');
}

泛型接口

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});
}

运行结果:

我是内存缓存 把 key=index  value={name: 张三, age: 20} -写入到了内存中

以上关于16. Dart中的泛型方法、泛型类、泛型接口的文章就介绍到这了,更多相关内容请搜索码云笔记以前的文章或继续浏览下面的相关文章,希望大家以后多多支持码云笔记。

「点点赞赏,手留余香」

0

给作者打赏,鼓励TA抓紧创作!

微信微信 支付宝支付宝

还没有人赞赏,快来当第一个赞赏的人吧!

声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权/违法违规/事实不符,请将相关资料发送至 admin@mybj123.com 进行投诉反馈,一经查实,立即处理!
重要:如软件存在付费、会员、充值等,均属软件开发者或所属公司行为,与本站无关,网友需自行判断
码云笔记 » 16. Dart中的泛型方法、泛型类、泛型接口

发表回复