当前位置: 首页 > web >正文

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> {@overridegetBykey(String key) {return null;}@overridevoid setBykey(String key, value) {print("我是文件缓存 ");}
}class MemoryCache<T> implements Cache<T> {@overridegetBykey(String key) {return null;}@overridevoid setBykey(String key, value) {print("我是内存缓存 ");}
}

http://www.xdnf.cn/news/2356.html

相关文章:

  • HarmonyOS Next~鸿蒙系统UI创新实践:原生精致理念下的设计革命
  • flask uri 怎么统一加前缀
  • zynq7035的arm一秒钟最多可以支持触发多少次中断
  • 【合新通信】---Mini单路光模块(Mini SFF/USOT)
  • [Lc_week] 447 | 155 | Q1 | hash | pair {}调用
  • 【Linux网络】Http服务优化 - 增加请求后缀、状态码描述、重定向、自动跳转及注册多功能服务
  • 51单片机所有寄存器介绍
  • FFmpeg之三 录制音频并保存, API编解码从理论到实战
  • Linux红帽:RHCSA认证知识讲解(十 四)分区管理、交换分区,创建逻辑卷与调整逻辑卷的大小
  • Spark Streaming实时数据处理实战:从DStream基础到自定义数据源集成
  • FPGA基础之基础语法
  • Unreal Engine 实现智慧水库周边环境以及智慧社区模拟的实例
  • Flutter 学习之旅 之 flutter 有时候部分手机【TextField】无法唤起【输入法软键盘】的一些简单整理
  • LINUX的使用(2)- 安装软件
  • Comfy UI 笔记
  • Selenium自动化测试+OCR-获取图片页面小说
  • 入职学习记录-RT-thread实时操作系统_1
  • Android HAL HIDL
  • C语言:数据的存储
  • matplotlib画图工具使用(1) 画折线统计图python代码
  • 【教学类-102-19】蝴蝶三色图作品1——卡纸蝴蝶(滴颜料按压对称花纹)A4横版最大号22.85CM
  • 如何在学习通快速输入答案(网页版),其他学习平台通用,手机上快速粘贴
  • 时间序列成像之点对称模式(Symmetrized Dot Pattern,SDP)
  • 【2025 最新前沿 MCP 教程 04】通信渠道:理解 MCP 传输机制
  • ShenNiusModularity项目源码学习(22:ShenNius.Admin.Mvc项目分析-7)
  • 【深度强化学习 DRL 快速实践】稀疏奖励问题 sparse reward
  • 高中数学联赛模拟试题精选第17套几何题
  • C++中const的应用(1)之const 形参和实参以及成员函数的 const 和重载
  • 从循环角度分析逐位分离法
  • 形象的讲解什么是Gateway网关