Dart-泛型

1.对不特定类型支持

泛型方法

//泛型方法
 T getData<T>(T value){
    //方法前面的T表示的是泛型,可以用其他字母代替 ,校验返回参数,不写T则不校验
 //<T>要求调用方法时指定类型
 //()T要求传入参数也是这个类型
 //传入什么类型,就返回什么类型
   return value;

  }
void main(List<String> args) {
 print(getData("hello"));
 getData<String>("yoyo");//必须用<>类型
 
}

泛型类

改造普通类成为泛型类
// class MyList{
// List list=[];
// void add(int value){
// this.list.add(value);
// }
// List getList(){
// return list;
// }
// }

//改造成泛型类,在类名,以及类中用到类型的增加T
class MyList{ //T
List list=[]; //T
void add(T value){ //T
this.list.add(value);
}
List getList(){
return list;
}
}

void main(List args) {
MyList l1=new MyList(); //可以省略new num是int 和double父类
l1.add(100);
l1.add(300);
l1.add(500);
l1.add(400);
print(l1.getList());
MyList l2=new MyList(); //可以省略new 不指定类型就是任意
l2.add(“李白”);
l2.add(“杜甫”);
l2.add(“王安石”);
l2.add(“白居易”);
print(l2.getList());

}

泛型接口

abstract class ObjectCache{
  getByKey(String key);
  void setByKey(String key,Object value);
}

abstract class StringCache{
 getByKey(String key);
  void setByKey(String key,Object value);
}

 abstract class Cache <T>{
    getByKey(String key);
  void setByKey(String key,T  value);
 }  

 class FileCahce<T> implements Cache<T>{
  @override
  getByKey( key) {
   
  }
 
  @override
  void setByKey(String key, T value) {
   print("我是FileCahce$key,$value写入了缓存");
  }

 }

 class MemoryCache<T> implements Cache<T>{
  @override
  getByKey(String key) {
    
  }
 
  @override
  void setByKey(String key, T value) {
   print("我是MemoryCache$key,$value写入了缓存");
  }

 }


 void main(List<String> args) {
  MemoryCache memoryCache=new MemoryCache<Map>();
  memoryCache.setByKey("uu", {"N1":"李白"});

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值