泛型是Java語言一個(gè)非常重要的概念,在Java集合類框架中被廣泛應(yīng)用。在介紹泛型之前先看一個(gè)例子。
案例1:建立CollectionTest1類,實(shí)例化ArrayList對(duì)象,在list集合添加String對(duì)象。
在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循環(huán)迭代集合中對(duì)象
while (iterator.hasNext()) {
String str = (String)iterator.next();
System.out.println(str);
}
}
}
在上面的案例代碼中,存入list容器的對(duì)象是字符串類型,因?yàn)閷?duì)象加入容器時(shí)都被轉(zhuǎn)化為Object類型,因此在使用迭代器的next()方法獲取對(duì)象元素時(shí),需要把Object類型強(qiáng)制轉(zhuǎn)換為字符串類型,這種類型轉(zhuǎn)換稱為向下類型轉(zhuǎn)換。向下類型轉(zhuǎn)換時(shí),如果父類不能轉(zhuǎn)換為子類,則拋出ClassCastExceptionClassCastException異常。在泛型出現(xiàn)之前,這種現(xiàn)象在編程中會(huì)經(jīng)常發(fā)生,因?yàn)橛袝r(shí)程序員在獲取集合存儲(chǔ)的對(duì)象元素時(shí),并不能夠完全明確集合中存儲(chǔ)的是屬于什么類型的元素。
那么有什么辦法可以讓裝入集合容器的數(shù)據(jù)保存自己的類型,而不被轉(zhuǎn)化為Object對(duì)象呢?這就需要用到JDK 5.0后支持的一項(xiàng)新功能——Java泛型。
泛型在Java代碼編譯時(shí)被用到,是提供給編譯器語法檢查用的。泛型允許用戶在定義類、類方法、形式參數(shù)、成員變量時(shí),指定它為通用類型,也就是數(shù)據(jù)類型可以是任意的類型,如“List《?》 list=null;”,具體調(diào)用的時(shí)候,要將通用類型轉(zhuǎn)換成指定的類型使用。
泛型這個(gè)概念類似于大學(xué)自習(xí)時(shí)的占座行為,在課桌上丟一本書或某個(gè)相關(guān)的標(biāo)記,表明此座位已經(jīng)有人了,這個(gè)座位上究竟是那位同學(xué),可能只有到上課才知道。泛型也就是給參數(shù)類型指定的一個(gè)占位符,就像方法的形式參數(shù)是運(yùn)行時(shí)傳遞的值的占位符一樣。
-
JAVA
+關(guān)注
關(guān)注
20文章
2982瀏覽量
106436 -
泛型
+關(guān)注
關(guān)注
0文章
5瀏覽量
2005 -
string
+關(guān)注
關(guān)注
0文章
40瀏覽量
4833
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
詳解Rust的泛型
labview連接mongdb問題,找到不.NET類中的泛型類
詳細(xì)介紹了Java泛型、注解、并發(fā)編程
Java Script的工作原理是什么?怎樣用它來生成簡(jiǎn)單的
java 泛型編程
聊聊java泛型實(shí)現(xiàn)的原理與好處
"引用"在Android和Java中的工作原理

評(píng)論