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