12.Dart-泛型

/**

* 泛型: (和swift里面的一樣)

*? 通俗理解: 泛型就是解決 類, 接口, 方法的重用性, 以及對(duì)不特定數(shù)據(jù)類型的支持(類型校驗(yàn))

*

*

*/

void main() {

? print(getData(123));

? print(getData("字符串"));

? print(getData([1, 2, 3, 4]));

? // 如果想指定傳入的類型,就在調(diào)用的時(shí)候通過(guò)<類型> 來(lái)指定類型, 如果指定類型之后, 參數(shù)和類型不一致會(huì)報(bào)錯(cuò)

? // String str = getData<String>(123);//要求的是字符串, 傳入的是數(shù)字就報(bào)錯(cuò)

? String str = getData<String>("123"); //要求的是字符串, 傳入的是數(shù)字就報(bào)錯(cuò)

? print(str);

// 下面是泛型類的使用, 在使用new創(chuàng)建累的實(shí)例的時(shí)候加上<T>, 就代表了類里面定義的T的類型

// 這里就是要求傳入的T是map類型

? FileCache f = new FileCache<Map>();

? f.setByKey("k", {"name": "張三"});

? // f.setByKey("v", 123);//上面定義的是Map,這里傳入number類型, 運(yùn)行就會(huì)報(bào)錯(cuò)

? // 這里要求傳入的是number類型

? FileCache f1 = new FileCache<int>();

? f1.setByKey("k", 123);

? // f1.setByKey("k", {"name": "張三"});//這里要求的是int類型, 傳入的是Map類型, 運(yùn)行會(huì)報(bào)錯(cuò)

}

// 傳入什么類型就返回什么類型的數(shù)據(jù)

// 泛型T, 在方法名后面加上<T>, 參數(shù)數(shù)據(jù)類型是T

T getData<T>(T value) {

? return value;

}

// 這里做一個(gè)泛型接口,在接口后面加個(gè)<T>代表的是泛型接口,沒加就是普通接口

abstract class Cache<T> {

? getByKey(String key);

? void setByKey(key, T value);

}

// 實(shí)現(xiàn)接口, 因?yàn)槭欠盒徒涌? 這里都要帶上<T>

class FileCache<T> implements Cache<T> {

? @override

? getByKey(String key) {

? ? return null;

? }

? @override

? void setByKey(key, value) {

? ? print("$key = $value");

? }

}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Dart學(xué)習(xí) =>只有一行代碼可以使用剪頭函數(shù) => print(‘a(chǎn)’) 或者{ print(‘a(chǎn)’)} 內(nèi)部語(yǔ)...
    love_p閱讀 1,606評(píng)論 1 2
  • TypeScript是微軟開發(fā)的,基于類的面向?qū)ο缶幊?,其文件?.ts 為后綴名; TypeScript是Jav...
    hellomyshadow閱讀 1,027評(píng)論 0 0
  • 回首望來(lái)做了程序員也有些年頭了,一直渾渾噩噩,從事Android也有三年多了,最近回頭一看自己還是什么都不會(huì)...
    暴躁的心閱讀 515評(píng)論 1 2
  • 1、Java中的泛型 思維導(dǎo)圖 1.1、為什么要使用泛型 例如下面這個(gè)例子,如果list不加泛型,先向其添加兩個(gè)S...
    Burning燃燒閱讀 677評(píng)論 0 0
  • 前文鏈接: Dart簡(jiǎn)介 Dart語(yǔ)法(上) 內(nèi)容: 函數(shù)(方法)函數(shù)定義及各類函數(shù);函數(shù)參數(shù);閉包 面向?qū)ο蠖x...
    玉圣閱讀 2,690評(píng)論 0 2

友情鏈接更多精彩內(nèi)容