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);
}