Java中泛型的本質

泛型在Java中經常用到。泛型在本質上是指類型參數化。所謂類型參數化,是指用來聲明數據的類型本身,也是可以改變的,它由實際參數來決定。在一般情況下,實際參數決定了形式參數的值。而類型參數化,則是實際參數的類型決定了形式參數的類型。

 

舉個簡單的例子。方法max()要求返回兩個參數中較大的那個,可以寫成:

Integer max(Integer a, Integer b){

   return a>b?a:b;

}

 

這樣編寫代碼當然沒有問題。不過,如果需要比較的不是Integer類型,而是Double或是Float類型,那麼就需要另外再寫max()方法。參數有多少種類型,就要寫多少個max()方法。但是無論怎麼改變參數的類型,實際上max()方法體內部的代碼並不需要改變。如果有一種機制,能夠在編寫max()方法時,不必確定參數a和b的數據類型,而等到調用的時候再來確定這兩個參數的數據類型,那麼只需要編寫一個max()就可以了,這將大大降低程序員編程的工作量。

 

在C++中,提供了函數模板和類模板來實現這一功能。而從JDK1.5開始,也提供了類似的機制:泛型。從形式上看,泛型和C++的模板很相似,但它們是採用完全不同的技術來實現的。

 

在泛型出現之前,Java的程序員可以採用一種變通的辦法:將參數的類型均聲明爲Object類型。由於Object類是所有類的父類,所以它可以指向任何類對象,但這樣做不能保證類型安全。

 

泛型則彌補了上述做法所缺乏的類型安全,也簡化了過程,不必顯示地在Object與實際操作的數據類型之間進行強制轉換。通過泛型,所有的強制類型轉換都是自動和隱式的。因此,泛型擴展了重複使用代碼的能力,而且既安全又簡單。

 

 

相關鏈接:

★  Java知識點彙總 

全球軟件項目外包平臺 兼職做外包 掙Money!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章