日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
如何使用泛型達(dá)到代碼重用的目的

通過泛型,你重新獲得了鏈接列表的代碼通用(對(duì)于所有類型只用實(shí)現(xiàn)一次),而當(dāng)你初始化鏈表的時(shí)候你告訴鏈表所能接受的類型。這個(gè)實(shí)現(xiàn)是非常簡單的,讓我們重新回到Node類:

創(chuàng)新互聯(lián)建站服務(wù)項(xiàng)目包括云巖網(wǎng)站建設(shè)、云巖網(wǎng)站制作、云巖網(wǎng)頁制作以及云巖網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,云巖網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到云巖省份的部分城市,未來相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!

 
 
 
  1. public class Node{  
  2.     Object data;  
  3.     ... 

注意到 data 的類型是Object,(在EmployeeNode中,它是Employee)。我們將把它變成一個(gè)泛型(通常,由一個(gè)大寫的T代表)。我們同樣定義Node類,表示它可以被泛型化,以接受一個(gè)T類型。

 
 
 
  1. public class Node < T>{  
  2.     T data;  
  3.     ... 

讀作:T類型的Node。T代表了當(dāng)Node被初始化時(shí),Node所接受的類型。T可以是Object,也可能是整型或者是Employee。這個(gè)在Node被初始化的時(shí)候才能確定。

注意:使用T作為標(biāo)識(shí)只是一種約定俗成,你可以使用其他的字母組合來代替,比如這樣:

 
 
 
  1. public class Node < UnknownType>{  
  2.     UnknownType data;  
  3.     ... 

通過使用T作為未知類型,next字段(下一個(gè)結(jié)點(diǎn)的引用)必須被聲明為T類型的Node(意思是說接受一個(gè)T類型的泛型化Node)。

    Node< T> next;

構(gòu)造函數(shù)接受一個(gè)T類型的簡單參數(shù):

 
 
 
  1. public Node(T data)  
  2. {  
  3.     this.data = data;  
  4.     this.next = null;  

Node 類的其余部分是很簡單的,所有你需要使用Object的地方,你現(xiàn)在都需要使用T。LinkedList 類現(xiàn)在接受一個(gè)T類型的Node,而不是一個(gè)簡單的Node作為頭結(jié)點(diǎn)。

 
 
 
  1. public class LinkedList< T>{  
  2.     Node< T> headNode = null; 

再來一遍,轉(zhuǎn)換是很直白的。任何地方你需要使用Object的,現(xiàn)在改做T,任何需要使用Node的地方,現(xiàn)在改做 Node< T>。下面的代碼初始化了兩個(gè)鏈接表。一個(gè)是整型的。

 
 
 
  1. LinkedList< int> ll = new LinkedList< int>(); 

另一個(gè)是Employee類型的:

 
 
 
  1. LinkedList< Employee> employees = new LinkedList< Employee>(); 

剩下的代碼與***個(gè)版本沒有區(qū)別,除了沒有裝箱、拆箱,而且也不可能將錯(cuò)誤的類型保存到集合中。

 
 
 
  1. LinkedList< int> ll = new LinkedList< int>();  
  2. for ( int i = 0; i <  10; i ++ )  
  3. {  
  4.     ll.Add(i);  
  5. }  
  6.  
  7. Console.WriteLine(ll);  
  8. Console.WriteLine("  Done.");  
  9.  
  10. LinkedList< Employee> employees = new LinkedList< Employee>();  
  11. employees.Add(new Employee("John"));  
  12. employees.Add(new Employee("Paul"));  
  13. employees.Add(new Employee("George"));  
  14. employees.Add(new Employee("Ringo"));  
  15.  
  16. Console.WriteLine(employees);   
  17. Console.WriteLine("  Done.");  
  18. Console.WriteLine("The fourth integer is " + ll[3]);  
  19. Employee d = employees[1];  
  20. Console.WriteLine("The second Employee is " + d); 

泛型允許你不用復(fù)制/粘貼冗長的代碼就實(shí)現(xiàn)類型安全的集合。而且,因?yàn)椋褂梅盒瓦\(yùn)行時(shí)才被擴(kuò)展成特殊類型。Just In Time編譯器可以在不同的實(shí)例之間共享代碼,***,它顯著地減少了你需要編寫的代碼。

這樣,使用泛型就達(dá)到了代碼重用的目的。


當(dāng)前名稱:如何使用泛型達(dá)到代碼重用的目的
路徑分享:http://www.5511xx.com/article/dhdpoec.html