0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Java泛型的工作原理和案例

如意 ? 來源:百家號(hào) ? 作者:米粒教育 ? 2020-07-01 10:14 ? 次閱讀

泛型是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(“first”);

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í)傳遞的值的占位符一樣。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • JAVA
    +關(guān)注

    關(guān)注

    19

    文章

    2943

    瀏覽量

    104089
  • 泛型
    +關(guān)注

    關(guān)注

    0

    文章

    5

    瀏覽量

    1948
  • string
    +關(guān)注

    關(guān)注

    0

    文章

    40

    瀏覽量

    4696
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    詳解Rust的

    所有的編程語言都致力于將重復(fù)的任務(wù)簡(jiǎn)單化,并為此提供各種各樣的工具。在 Rust 中,(generics)就是這樣一種工具,它是具體類型或其它屬性的抽象替代。在編寫代碼時(shí),我們可以直接描述
    發(fā)表于 11-12 09:08 ?1000次閱讀

    Java的背景和作用

    Java的背景和作用 JavaJava編程
    的頭像 發(fā)表于 09-20 14:30 ?883次閱讀
    <b class='flag-5'>Java</b><b class='flag-5'>泛</b><b class='flag-5'>型</b>的背景和作用

    雙極晶體管工作原理

    雙極晶體管工作原理
    發(fā)表于 08-20 08:53

    labview連接mongdb問題,找到不.NET類中的

    有沒有人用labview連接mongodb數(shù)據(jù)庫的?已下載mongodb的c#驅(qū)動(dòng),利用labview中的.net控件調(diào)用相關(guān)函數(shù),但是驅(qū)動(dòng)中有部分函數(shù)在類中, labview能調(diào)用c#中的
    發(fā)表于 04-08 13:38

    Σ-ΔADC的工作原理與ADC有哪些不同

    1 AD7760(Σ-Δ模數(shù)轉(zhuǎn)換器)1.1 Σ-ΔADC的工作原理的ADC不同,Σ-ΔADC不是直接根據(jù)采樣數(shù)據(jù)的每一個(gè)樣值的大小進(jìn)行量化編碼,而是根據(jù)前一量值與后一量值的差值即所謂的增量的大小
    發(fā)表于 08-09 07:38

    詳細(xì)介紹了Java、注解、并發(fā)編程

    介紹了Java、注解、并發(fā)編程、數(shù)據(jù)傳輸與序列化、高效IO、容器集合、反射與類加載以及JVM重點(diǎn)知識(shí)線程、內(nèi)存模型、JVM運(yùn)行時(shí)內(nèi)存、垃圾回收與算法、Java中四種引用類型、GC
    發(fā)表于 08-20 06:09

    冒泡排序法的實(shí)現(xiàn)

    冒泡排序法的實(shí)現(xiàn),自用筆記!
    發(fā)表于 01-20 07:22

    Java Script的工作原理是什么?怎樣用它來生成簡(jiǎn)單的

    Java Script的工作原理是什么?怎樣用它來生成簡(jiǎn)單的計(jì)算器? JavaScript就是所謂的客戶端腳本語言,是一種在互聯(lián)網(wǎng)瀏覽器(瀏覽器也稱為Web客戶端,因?yàn)樗B接到Web服務(wù)器
    發(fā)表于 08-04 10:44 ?2108次閱讀

    閥的工作原理

    工作原理閥:是儀表測(cè)量管路系統(tǒng)中重要組成部分,主要有截
    發(fā)表于 10-25 14:03 ?2126次閱讀

    iOS中關(guān)于的解析

    文章圍繞這五點(diǎn): 1. 是什么 2. 為什么要用 3. 怎么用 4.
    發(fā)表于 09-25 10:01 ?0次下載

    java 編程

    一。 概念的提出(為什么需要)? 首先,我們看下下面這段簡(jiǎn)短的代碼: publicclassGenericTest { publicstaticvoidmain(String[
    發(fā)表于 09-27 11:15 ?0次下載

    聊聊java實(shí)現(xiàn)的原理與好處

    摘要: 和C++以模板來實(shí)現(xiàn)靜多態(tài)不同,Java基于運(yùn)行時(shí)支持選擇了,兩者的實(shí)現(xiàn)原理大相庭徑。C++可以支持基本類型作為模板參數(shù),Java卻只能接受類作為
    發(fā)表于 09-27 16:50 ?0次下載

    "引用"在Android和Java中的工作原理

    本文講的是徹底理解引用在Android和Java中的工作原理,引用指向了一個(gè)對(duì)象,你能通過引用訪問對(duì)象。Java默認(rèn)有4種類型的引用:強(qiáng)引用(StrongReference)、軟引用(SoftReference)、弱引用(Wea
    發(fā)表于 11-27 08:55 ?1210次閱讀
    "引用"在Android和<b class='flag-5'>Java</b>中的<b class='flag-5'>工作原理</b>

    逆變器工作原理視頻

    本文以逆變器的工作原理為中心而展開的話題闡述,分別介紹了全控逆變器工作原理和半控逆變器工作原理。
    的頭像 發(fā)表于 08-02 16:02 ?5w次閱讀

    Java反射的工作原理和源碼分析

    Java反射的工作原理和源碼分析
    發(fā)表于 07-08 15:11 ?14次下載
    <b class='flag-5'>Java</b>反射的<b class='flag-5'>工作原理</b>和源碼分析