1.可用于List,Set,Map
//List
var names = <String>['Seth', 'Kathy', 'Lars'];
//Set
var uniqueNames = <String>{'Seth', 'Kathy', 'Lars'};
//Map
var pages = <String, String>{
'index.html': 'Homepage',
'robots.txt': 'Hints for web robots',
'humans.txt': 'We are people, not machines'
};
2.可用于方法
T first<T>(List<T> ts) {
// Do some initial work or error checking, then...
T tmp = ts[0];
// Do some additional checking or processing...
return tmp;
}
3.泛型類
class Cache<T>{
/// 緩存數(shù)據(jù)存儲到該 Map 集合中
Map<String, Object> _map = Map();
/// 設置泛型緩存數(shù)據(jù) , 該方法是泛型方法
/// 此處將 T 類型的數(shù)據(jù)存放到 map 集合中
void setCacheItem(String key, T value){
_map[key] = value;
}
/// 取出泛型緩存數(shù)據(jù) , 該方法是泛型方法
T getCachedItem(String key){
return _map[key];
}
}
使用如下:
Cache<String> cache = Cache();
// 調(diào)用泛型方法時 , 傳入的參數(shù)必須符合對應的泛型類型
// 泛型約束 : 泛型使用時會進行類型檢查約束 , 如果設置錯誤的類型 , 編譯時報錯
cache.setCacheItem("name", "Tom");
// 獲取緩存內(nèi)容
String value = cache.getCachedItem("name");
print("泛型測試, 類型字符串, 獲取的緩存內(nèi)容為 ${value}");
// 創(chuàng)建泛型類對象 , 泛型類型設置為 int 類型
Cache<int> cache2 = Cache();
// 調(diào)用泛型方法時 , 傳入的參數(shù)必須符合對應的泛型類型
// 泛型約束 : 泛型使用時會進行類型檢查約束 , 如果設置錯誤的類型 , 編譯時報錯
cache2.setCacheItem("age", 18);
// 獲取緩存內(nèi)容
int value2 = cache2.getCachedItem("age");
print("泛型測試, 類型整型, 獲取的緩存內(nèi)容為 ${value2}");
輸出結(jié)果:
I/flutter (24673): 泛型測試, 類型字符串, 獲取的緩存內(nèi)容為 Tom
I/flutter (24673): 泛型測試, 類型整型, 獲取的緩存內(nèi)容為 18