7. Dart - 泛型

2021-03-09  本文已影响0人  Aliv丶Zz

1. 泛型方法

泛型方法的定义:

 T getValue<T>(T v) {
    return v;
  }

第一个T,表示方法返回类型
第二个T,表示声明的泛型类型
第三个T,表示方法入参类型
ps: 字母 T 可用其他字母替换,但是实际开发中常用T来表示。

示例代码:

main() {
  T getValue<T>(T v) {
    return v;
  }

  print(getValue(1234));//1234
  print(getValue('HelloWorld'));//HelloWorld

}

如下方式即表明泛型类型为String,则此时只能传入String类型

  var v1 = getValue<String>('vvvvv');
  print(v1);//vvvvv

2. 泛型类

class PrintClass<T> {
  List list = new List<T>();
}


main() {

  PrintClass pc1 = PrintClass();
  pc1.list.add(123);
  pc1.list.add('hello');

  PrintClass pc2 = PrintClass<String>();
  pc2.list.add('123');

}

pc1 未指定泛型类型,则pc1.list可以增加任意类型。
pc2 被指定为String类型,则pc2.list只能添加String类型

3. 泛型接口

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

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

以上两个接口可简写为:

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

猜你喜欢

热点阅读