13 爲什麼會有泛型?

爲什麼會有泛型?

泛型,顧名思義就是廣泛的類型,可以通用的類型,也就是說是爲了解決特別的問題。

在泛型出來前,我們先看一段遍歷的代碼:

package com.junc.test1;

import java.util.ArrayList;
import java.util.Iterator;

public class Test5 {

    public static void main(String[] args) {
        ArrayList list = new ArrayList();
        list.add("112");    //在list中添加不同類型的數據
        list.add(123);
        list.add(new Student("zhangs", 12));

        //通過迭代器遍歷
        Iterator it = list.iterator();
        while(it.hasNext()) {
            Student stu = (Student)it.next(); // 可以將所有的類型強轉成學生?
        }
    }
}

這個意思就好比:我有一個袋子,然後將玩具、水果、飲料全放一起了,然後我取的時候就要翻個底朝天才能找到東西,這樣是很不方便的。同樣的,我們取東西的時候,不可能取個水果說這個是飲料。那麼怎麼辦呢?

當然是分類啦,用幾個小袋子裝,小袋子上提前指明這個袋子裝什麼的,比如裝玩具的包裝上面就寫玩具,這個要找東西的時候,就可以直接找了,並且,當我們將玩具放入水果的袋子裏就可以直接看到錯誤,而不是當使用的時候才報錯誤。

同理:如果在寫代碼的時候不提示錯誤,當客戶使用軟件的時候出現崩潰是很糟糕的。

所以,就產生了泛型。提前指定數據類型(小袋子名稱),如下代碼所示:

package com.junc.test1;

import java.util.ArrayList;
import java.util.Iterator;

public class Test5 {

    public static void main(String[] args) {
        ArrayList<Student> list = new ArrayList<Student>(); //加上<Student>泛型
        list.add("112");    //此處在編譯時就直接報錯
        list.add(123);      //此處在編譯時就直接報錯
        list.add(new Student("zhangs", 12));

        //通過迭代器遍歷
        Iterator<Student> it = list.iterator();
        while(it.hasNext()) {
            Student stu = (Student)it.next(); 
        }
    }
}

當然了,還有泛型接口,泛型方法,都是一個道理的了

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