為什么要使用泛型程序設(shè)計
泛型程序設(shè)計意味著編寫的代碼可以被不同類型的對象所重用。
參數(shù)類型的好處
在Java增加泛型類以前,泛型程序設(shè)計是使用繼承實現(xiàn)的。ArrayList類只維護一個Object引用的數(shù)組:
public class ArrayList
{
private Object[] elementData;
...
public Object get(int i){...}
public void add(Object o){...}
}
這樣有兩個問題:1.取得一個值得時候必須進行強制類型轉(zhuǎn)換,2.沒有錯誤檢查,可以向數(shù)組里添加任意類的對象。
ArrayList files = new ArrayList();
...
String filename = (String) files.get(0);//手動強制類型轉(zhuǎn)換
...
files.add(new File("..."))//沒有錯誤檢查
泛型提供了一個更好的解決方案:參數(shù)類型。ArrayList有一個類型參數(shù)來指示元素的類型:
ArrayList<String> files = new ArrayList<String>();
//也可以在構(gòu)造參數(shù)中省略泛型類型。
ArrayList<String> files = new ArrayList<>();
提供了類型參數(shù),編譯器可以很好地利用這個類型來進行判斷,當調(diào)用get的時候就不要強制類型轉(zhuǎn)換,編譯器就知道返回的類型為String。
String filename = files.get(0);
同時還提供了錯誤檢查,當插入類型不為String時,編譯器會提示錯誤。
files.add(new File("..."));//can only add String objects to an ArrayList<String>
參數(shù)類型的魅力在于:使得程序有更好的可讀性和安全性。