在Java編程語(yǔ)言中,我們經(jīng)常使用List來(lái)保存一組數(shù)據(jù)。但是有一種List叫做泛型List,它與普通List有些不同。下面將會(huì)逐條講解它們的區(qū)別。
1、類型約束
// 普通List List list = new ArrayList(); list.add("hello"); list.add(123); // 此處插入了一個(gè)整型元素 // 泛型List List<String> genList = new ArrayList<String>(); genList.add("hello"); genList.add(123); // 編譯報(bào)錯(cuò),只能插入String類型的元素
從上面的代碼可以看出,普通List沒(méi)有對(duì)插入元素的類型進(jìn)行約束,而泛型List對(duì)類型進(jìn)行了約束。這樣就避免了插入不同類型的元素進(jìn)入List集合中。
2、類型轉(zhuǎn)換
// 普通List List list = new ArrayList(); list.add("hello"); String str = (String) list.get(0); // 泛型List List<String> genList = new ArrayList<String>(); genList.add("hello"); String genStr = genList.get(0);
可以發(fā)現(xiàn),普通List在獲取元素時(shí)需要進(jìn)行類型轉(zhuǎn)換,而泛型List不需要。泛型List在添加元素時(shí)已經(jīng)進(jìn)行了類型的確定,獲取元素時(shí)就不需要再進(jìn)行類型轉(zhuǎn)換,避免了強(qiáng)制類型轉(zhuǎn)換帶來(lái)的安全性問(wèn)題。
3、代碼可讀性
// 普通List List list = new ArrayList(); list.add("hello"); String str = (String) list.get(0); // 泛型List List<String> genList = new ArrayList<String>(); genList.add("hello"); String genStr = genList.get(0);
從上述代碼中可以看出,使用泛型List的代碼更加簡(jiǎn)潔,可讀性更高。泛型List在聲明時(shí)就確定了元素類型,使得我們?cè)谔幚砑现械脑貢r(shí)更加方便。
綜上所述,泛型List比普通List更加安全,方便,可讀性更高。因此,在編寫程序時(shí)應(yīng)該盡可能地使用泛型List。