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("我是内存缓存 ");
  }
}
相关推荐
BD_Marathon2 小时前
Ubuntu:Mysql服务器
服务器·mysql·ubuntu
0wioiw03 小时前
Ubuntu基础(监控重启和查找程序)
linux·服务器·ubuntu
艾希逐月4 小时前
TCP数据的发送和接收
服务器·网络·tcp/ip
胡斌附体5 小时前
linux测试端口是否可被外部访问
linux·运维·服务器·python·测试·端口测试·临时服务器
大锦终5 小时前
【Linux】常用基本指令
linux·运维·服务器·centos
qq_393828225 小时前
电脑休眠设置
windows·电脑·软件需求
知北游天5 小时前
Linux:多线程---深入互斥&&浅谈同步
linux·运维·服务器
only-lucky5 小时前
C语言socket编程-补充
服务器·c语言·php
码农101号6 小时前
Linux中容器文件操作和数据卷使用以及目录挂载
linux·运维·服务器
程序员弘羽7 小时前
Linux进程管理:从基础到实战
linux·运维·服务器