我想以語義的方式理解泛型。例如,當我讀到人們將它們稱爲可以制定政策的結構時,抽象類似乎適合我。當我讀到人們將它們稱爲協作合同時,接口就會崩潰。語義上代表泛型
什麼是一些好的方法來思考泛型,這可能會幫助我區分它們與其他OO結構並編寫更智能的API?
我想以語義的方式理解泛型。例如,當我讀到人們將它們稱爲可以制定政策的結構時,抽象類似乎適合我。當我讀到人們將它們稱爲協作合同時,接口就會崩潰。語義上代表泛型
什麼是一些好的方法來思考泛型,這可能會幫助我區分它們與其他OO結構並編寫更智能的API?
覺得作爲模板,使其他類(類似,通用的功能是用於製作其他功能模板)。類型參數用作模板中的開口:通過在其中插入具體類型,可以將泛型類或泛型函數變爲真實的類或函數。類型參數「粘貼」模板上的指定孔,產生完整的定義。
這很有趣。如果我正確地理解了這一點,就好像您正在標記由調用方定義的方法/類簽名摘要的一部分。暖和嗎?或更冷? – cocogorilla 2013-04-06 00:49:00
@ user1902664正確,您會保留部分課程未完成,直到用戶提供缺少的類型信息。 – dasblinkenlight 2013-04-06 00:58:49
接受這個答案對我來說最有幫助,讓我的大腦以不同的方式思考他們。謝謝。 – cocogorilla 2013-04-06 01:36:17
您可以將它們視爲對象類型的包裝。你正在創建一些函數來處理實例化的任何類型的對象,所以它就像一個將爲多種類型的對象執行相同工作的模板。
微軟的介紹,仿製藥可能有一些很好的說明以及泛型類的
http://msdn.microsoft.com/en-us/library/ms379564(v=vs.80).aspx
看來你想從自上而下的角度來理解你的理解。從定性的角度來看,它是「什麼」,然後從那裏推導出真正的意義。簡單地學習這些不同的結構做而不是試圖拿出標籤是不是更容易?即從自下而上的角度來看它,並根據您現在已經瞭解的內容推斷出您自己的定性描述。
抽象類需要你實現一個屬性或方法,並且不能被實例化。它與界面有什麼區別?它要求子類選擇你的唯一基類。接口沒有這樣的限制,但要求你在實現中定義它的整個行爲,而不是依賴於在基類中定義的一些行爲。
同樣,泛型允許您將類型作爲變量引入,可以由調用方指定。這一功能類似於一般的方法參數,只是更高一級。換句話說,方法參數允許您根據調用者指定的某些輸入來改變實現。通用參數允許您根據調用者指定的一些(其他)輸入(即類型)來改變實現。
當然很清楚爲什麼List<T>
比ArrayList
更有用。我不確定爲什麼隱喻對理解原因有幫助。
我真的很感謝你的努力。但我不得不大聲笑......我走了一半,所有的細節都轉向了我大腦中的狼吞虎嚥。我個人很難從這些部分獲得洞(我的妻子沒有)。如果我能得到一個形態...然後突然部分開始落到位。我見過很多列表
@ user1902664,但是你明白爲什麼'List
是的。作爲列表
將它們視爲類型模板。 – RBarryYoung 2013-04-06 01:00:09