泛型方法
T getData<T>(T value){
return value;
}
void main(List<String> args) {
//没有类型校验
print(getData(23));
print("AAA");
//指定类型
print(getData<int>(34));
print(getData<String>("BBB"));
}
泛型类
class MyList<T> {
List list = <T>[];
void add(T value) {
this.list.add(value);
}
List getList() {
return list;
}
}
void main(List<String> args) {
// 可传入任意类型数据
MyList l = MyList();
l.add(1);
l.add("AA");
l.add(true);
print(l.getList()); //[1, AA, true]
//实例化的时候可指定传入类型数据
MyList l1 = new MyList<String>();//只能传入String的数据
l1.add("11");
l1.add("AA");
l1.add("33");
print(l1.getList()); //[11, AA, 33]
}
Dart中的泛型接口
示例:
实现数据缓存的功能:有文件缓存、内存缓存。内存缓存和文件缓存按照接口约束实现
1、定义一个泛型接口 约束实现它的子类必须有getByKey(key)和setByKey(key,value)
2、要求setByKey的时候的value的类型和实例化子类的时候指定的类型一致
abstract class Cache<T> {
getByKey(String key);
void setByKey(String key, T value);
}
class FileCache<T> implements Cache<T>{
@override
getByKey(String key) {
return key;
}
@override
void setByKey(String key, T value) {
print("我是文件缓存,把key=${key} value=${value}的数据写入到了内存中");
}
}
class MemoryCache<T> implements Cache<T>{
@override
getByKey(String key) {
return key;
}
@override
void setByKey(String key, T value) {
print("我是内存缓存,把key=${key} value=${value}的数据写入到了内存中");
}
}
void main(List<String> args) {
//指定传入类型为String
MemoryCache m = new MemoryCache<String>();
m.setByKey("内存", "数据A");
//指定传入类型为Map
MemoryCache m1 = new MemoryCache<Map>();
m1.setByKey("内存", {"name":"AA","age":23});
}
Dart学习记录,一起学习哦~
本文介绍了Dart语言中泛型方法和泛型类的使用,通过示例展示了如何创建和使用泛型类来存储不同类型的元素。此外,还探讨了泛型接口的概念,以`Cache`接口为例,解释了如何定义并实现带有类型约束的泛型接口,确保数据操作的一致性。示例中包括了`MemoryCache`和`FileCache`两个实现类,强调了指定类型的重要性。
513

被折叠的 条评论
为什么被折叠?



