爲什麼會有泛型?
泛型,顧名思義就是廣泛的類型,可以通用的類型,也就是說是爲了解決特別的問題。
在泛型出來前,我們先看一段遍歷的代碼:
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();
}
}
}
當然了,還有泛型接口,泛型方法,都是一個道理的了