泛型是Java語言一個非常重要的概念,在Java集合類框架中被廣泛應用。在介紹泛型之前先看一個例子。
案例1:建立CollectionTest1類,實例化ArrayList對象,在list集合添加String對象。
在collection包下新建CollectionTest1類。代碼如下:
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
public class CollectionTest1 {
public static void main(String[] args) {
Collection list = new ArrayList();
list.add(“second”);
list.add(“third”);
// 獲取list集合的迭代器
Iterator iterator = list.iterator();
// 使用while循環迭代集合中對象
while (iterator.hasNext()) {
String str = (String)iterator.next();
System.out.println(str);
}
}
}
在上面的案例代碼中,存入list容器的對象是字符串類型,因為對象加入容器時都被轉化為Object類型,因此在使用迭代器的next()方法獲取對象元素時,需要把Object類型強制轉換為字符串類型,這種類型轉換稱為向下類型轉換。向下類型轉換時,如果父類不能轉換為子類,則拋出ClassCastExceptionClassCastException異常。在泛型出現之前,這種現象在編程中會經常發生,因為有時程序員在獲取集合存儲的對象元素時,并不能夠完全明確集合中存儲的是屬于什么類型的元素。
那么有什么辦法可以讓裝入集合容器的數據保存自己的類型,而不被轉化為Object對象呢?這就需要用到JDK 5.0后支持的一項新功能——Java泛型。
泛型在Java代碼編譯時被用到,是提供給編譯器語法檢查用的。泛型允許用戶在定義類、類方法、形式參數、成員變量時,指定它為通用類型,也就是數據類型可以是任意的類型,如“List《?》 list=null;”,具體調用的時候,要將通用類型轉換成指定的類型使用。
泛型這個概念類似于大學自習時的占座行為,在課桌上丟一本書或某個相關的標記,表明此座位已經有人了,這個座位上究竟是那位同學,可能只有到上課才知道。泛型也就是給參數類型指定的一個占位符,就像方法的形式參數是運行時傳遞的值的占位符一樣。
-
JAVA
+關注
關注
19文章
2960瀏覽量
104562 -
泛型
+關注
關注
0文章
5瀏覽量
1953 -
string
+關注
關注
0文章
40瀏覽量
4719
發布評論請先 登錄
相關推薦
評論