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("我是内存缓存 ");
  }
}
相关推荐
獭.獭.1 小时前
Linux -- 文件【下】
linux·服务器·文件系统·软硬链接·inode·ext2
破刺不会编程3 小时前
socket编程UDP
linux·运维·服务器·网络·c++·网络协议·udp
来来走走3 小时前
Flutter开发 网络请求
android·flutter
NEXU59 小时前
Linux:套接字
linux·服务器·网络
FreeBuf_11 小时前
CERT/CC警告:新型HTTP/2漏洞“MadeYouReset“恐致全球服务器遭DDoS攻击瘫痪
服务器·http·ddos
麦兜*13 小时前
【swift】SwiftUI动画卡顿全解:GeometryReader滥用检测与Canvas绘制替代方案
服务器·ios·swiftui·android studio·objective-c·ai编程·swift
DavieLau15 小时前
C#项目WCF接口暴露调用及SOAP接口请求测试(Python版)
xml·服务器·开发语言·python·c#
星哥说事16 小时前
如何将堡塔云WAF迁移到新的服务器
服务器·git·github
₯㎕星空&繁华17 小时前
Linux-地址空间
linux·运维·服务器·经验分享·笔记
云心雨禅17 小时前
网站突然崩了,此站点遇到了致命错误!
服务器·mysql