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>{
/// 緩存數據存儲到該 Map 集合中
Map<String, Object> _map = Map();
/// 設置泛型緩存數據 , 該方法是泛型方法
/// 此處將 T 類型的數據存放到 map 集合中
void setCacheItem(String key, T value){
_map[key] = value;
}
/// 取出泛型緩存數據 , 該方法是泛型方法
T getCachedItem(String key){
return _map[key];
}
}
使用如下:
Cache<String> cache = Cache();
// 調用泛型方法時 , 傳入的參數必須符合對應的泛型類型
// 泛型約束 : 泛型使用時會進行類型檢查約束 , 如果設置錯誤的類型 , 編譯時報錯
cache.setCacheItem("name", "Tom");
// 獲取緩存內容
String value = cache.getCachedItem("name");
print("泛型測試, 類型字符串, 獲取的緩存內容為 ${value}");
// 創建泛型類對象 , 泛型類型設置為 int 類型
Cache<int> cache2 = Cache();
// 調用泛型方法時 , 傳入的參數必須符合對應的泛型類型
// 泛型約束 : 泛型使用時會進行類型檢查約束 , 如果設置錯誤的類型 , 編譯時報錯
cache2.setCacheItem("age", 18);
// 獲取緩存內容
int value2 = cache2.getCachedItem("age");
print("泛型測試, 類型整型, 獲取的緩存內容為 ${value2}");
輸出結果:
I/flutter (24673): 泛型測試, 類型字符串, 獲取的緩存內容為 Tom
I/flutter (24673): 泛型測試, 類型整型, 獲取的緩存內容為 18