通俗理解就是:
泛型就是解决 类 接口 方法的复用性以及对不特定数据类型的支持(类型校验)
泛型方法
// 泛型方法的定义
T getData<T>(T val) {
return val;
}
void main() {
// 泛型方法的调用
print(getData<String>('lynn'));
print(getData<int>(123));
print(getData<bool>(true));
}
泛型类
class PrintList<T> {
List<T> list = [];
void add(T val){
this.list.add(val);
}
void printInfo(){
for (var i = 0; i < this.list.length; i++) {
print(this.list[i]);
}
}
}
void main() {
PrintList list = new PrintList<int>();
list.add(1);
list.add(2);
list.add(3);
list.printInfo();
}
泛型接口
// 泛型 接口
abstract class Cache<T> {
getCache(String key);
void setCache(String key , T value);
}
// 文件缓存
class FileCache<T> implements Cache<T> {
@override
getCache(String key) {
return key;
}
@override
setCache(String key, T value) {
print('我是文件缓存 --- key=$key 已存入文件中');
}
}
// 内存缓存
class MemoryCache<T> implements Cache<T> {
@override
getCache(String key) {
return key;
}
@override
setCache(String key, T value) {
print('我是内存缓存 --- key=$key 已存入文件中');
}
}
void main() {
FileCache fileCache = new FileCache<String>();
fileCache.setCache('文件缓存', '文件');
// fileCache.setCache('文件缓存', 123); 报错
MemoryCache memoryCache = new MemoryCache<int>();
memoryCache.setCache('内存缓存', 123);
// memoryCache.setCache('内存缓存', '123'); 报错
}