Flutter 泛型 泛型方法 泛型类 泛型接口

目录

泛型简单使用

泛型类的简单使用

泛型接口的使用


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

泛型简单使用

复制代码
main(){
  print(getData2("XXX"));
  getData2<String>("XXX");
  getData2<int>(1);

}


String getData(String value) {
  return value;
}

//不指定返回类型放弃了类型检查。我们现在想实现的是传入什么 返回什么。
getData1(value) {
  return value;
}

//泛型
T getData2<T>(T value) {
  return value;
}

//泛型
getData3<T>(T value) {
  return value;
}


  List list = List.filled(2, "");
  list[0] = "张三";
  list[1] = "李四";
  print(list);

  List list1 = List<String>.filled(2, "");
  list1[0] = "张三";
  list1[1] = "李四";
  print(list1);

  List list2 = List<int>.filled(2, 0);
  list2[0] = 1;
  list2[1] = 2;
  print(list2);

泛型类的简单使用

复制代码
main() {

 var list3 = MyList();
  list3.add(1);
  list3.add(5);
  print(list3.getList());

  //可以设置多个类型的数据
  var list4 = MyList1();
  list4.add("小飞");
  list4.add(5);
  list4.add(true);
  print(list4.getList());

}


class MyList {
  List list = <int>[];

  void add(int value) {
    this.list.add(value);
  }

  List getList() {
    return list;
  }
}

//泛型类
class MyList1<T> {
  List list = <T>[];

  void add(T value) {
    this.list.add(value);
  }

  List getList() {
    return list;
  }
}

泛型接口的使用

复制代码
/**
    Dart中的泛型接口:
    实现数据缓存的功能:有文件缓存、和内缓存。内存缓存和文件缓存按照接口约束实现。
    1、定义一个泛型接口 约束实现它的子类必须有getByKey(key)和 setByKey(key,value)
    2、要求setByKey的时候的value的类型和实例化子类的时候指定的类型一致
 */


main(){


//举例
  var memoryCache = MemoryCache<String>();
  memoryCache.setBykey("name", "张三");

  var memoryCache1 = MemoryCache<Map>();
  memoryCache1.setBykey("name", {"name": "张三", "age": 20});

}

abstract class Cache<T> {
  getBykey(String key);

  void setBykey(String key, T value);
}

class FileCache<T> implements Cache<T> {
  @override
  getBykey(String key) {
    return null;
  }

  @override
  void setBykey(String key, value) {
    print("我是文件缓存 ");
  }
}

class MemoryCache<T> implements Cache<T> {
  @override
  getBykey(String key) {
    return null;
  }

  @override
  void setBykey(String key, value) {
    print("我是内存缓存 ");
  }
}
相关推荐
what_201823 分钟前
Linux 磁盘 (查看、划分、inode)
linux·运维·服务器
蓝鸟197427 分钟前
Windows Route 内外网双通原理+实战详解(彻底解决双网卡互斥断网)
windows·网络运维·电脑网络配置·路由冲突解决·route命令·内外网同时上网·windows路由 双网卡双通
愚者Pro1 小时前
切换本地 Flutter SDK 版本
flutter
2601_961845422 小时前
法考真题及答案解析|历年真题|资料已整理
linux·windows·ubuntu·macos·centos·gnu
A_humble_scholar2 小时前
Linux(七)调度器:从硬件矛盾到进程切换的底层逻辑
linux·服务器·网络
TT_Close2 小时前
别再复制旧 Flutter 工程了,真正拖慢你的不是业务代码
flutter·npm·visual studio code
C语言小火车3 小时前
嵌入式Linux应用开发技术栈完全指南
linux·运维·服务器
m0_738120723 小时前
渗透测试基础——基于Docker的Rsync服务靶场搭建与原理讲解
运维·服务器·网络·安全·web安全·docker·容器
coolwaterld3 小时前
windows下删文件,找出“到底是谁占用
windows
风华圆舞4 小时前
鸿蒙 + Flutter 下 AI 助手为什么要支持流式输出
人工智能·flutter·harmonyos