Dart系列(十四) 泛型方法-泛型类- 泛型接口


发文时间:2021年03月07日 22:15:12     编辑:Aaron      标签:记录Dart语言的学习历程 579


Dart是谷歌开发的计算机编程语言,后来被Ecma (ECMA-408)认定为标准。它被用于web、服务器、移动应用和物联网等领域的开发。

dart 中的泛型  - 泛型方法 泛型类 泛型接口

泛型就是解决接口的通用性,就好比

1、 你当前传入int 你希望返回的也是int

2、 你当前传入String 你希望返回的也是String

按普通的方法来写 那就得写两个方法 这样的话 代码很冗余

//泛型方法
//需求 传入int类型 返回int类型  ,传入String 类型 返回String类型 方法(传入什么类型 就返回什么类型)
T getData<T> (T value){
  //T可以用其他字母代替 
  return value;
}

/*
 方法前加T的话,对返回类型也会做限定(只能动态返回)
 如若不加的话 那就是对返回类型 不做限定
 */ 

//泛型类

main(){
  //泛型方法
 var a= getData<String>('xxxxx');  //String 更改这里的值就好了 定义你当前所需要的类型
  //因为当前定义的是String类型 如若你传入的是int类型 那就会报错
 print(a); }
//泛型类
//需求 定义一个类 可以传入int数据 又可以String的数据等等
class Mylist<T>{
  List list=<T>[];
  void add(T value){
    this.list.add(value);
  }
   getInfo(){
    print(list);
  }
}

main(){
  
  //调用泛型类
  
  //不指定的话 那就是任意类型
//   Mylist b=new Mylist();
//   b.add('第一个数据');
//   b.add(2222);
//   b.getInfo();//[第一个数据, 2222]
  
  
   //假设指定类型 当前类里只能传入int类型
  Mylist b=new Mylist<int>();
  b.add(11111); //只能int类型 不然报错
  b.add(2222);
  b.getInfo();//成功输出 [11111, 2222]
}
//定义接口的规范性
abstract class Cache<T>{
   getBykey(String key);
   void setBukey(String key,T value);
 }

//定义两个类
class Aclass<T> implements Cache<T>{
  getBykey(String key){
    return null;
  }
  
  setBukey(String key,T value){
       print("我是第11111111个方法  ${key}  --  ${value}");
  }
}


//定义两个
class Bclass<T> implements Cache<T>{
  getBykey(String key){
    return null;
  }
  
  setBukey(String key,T value){
    print("我是第2222222222个方法  ${key}  --  ${value}");
    
  }
}


main(){
  
  //需求定义  指定传入的参数必须要string类型
  Bclass m=new Bclass<String>();
  m.setBukey('key值111','我是b里面的值');//成功调用  (如果你当前传入int 那就会报错了)


 

若无特殊说明,此文章为博主原创。
写稿不易,如需转载,请注明出处: https://www.aaroner.cn/art/45.html




SITE MAP

  FOLLOW US