<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 8,  comments - 6,  trackbacks - 0

    1.3  執(zhí)行安全存放:使用類型安全映射

    Java5+

    正如前面討論for循環(huán)時(shí)看到的那樣,使用泛型有助于簡(jiǎn)化代碼并降低出錯(cuò)概率。for循環(huán)會(huì)假定ArrayList僅包含Integer對(duì)象,因?yàn)锳rrayList嚴(yán)格地被定義為由Integer對(duì)象組成。因而當(dāng)從列表檢索項(xiàng)目時(shí)可以避免從Object到Integer的強(qiáng)制類型轉(zhuǎn)換。

    Java 5對(duì)核心API做出了很多利用泛型的更改。查看相關(guān)文檔你會(huì)發(fā)現(xiàn)已重新定義了很多類以允許使用泛型。如果愿意的話,仍可以按照以前的方式構(gòu)造和使用這些類,例如使用new ArrayList()。這樣做的原因是為了兼容性,以便仍可以在舊版本的編譯器下運(yùn)行代碼。當(dāng)然,這樣會(huì)失去泛型提供的類型檢查帶來(lái)的便利性和安全性。

    一個(gè)得到很好修訂的類是java.util.Map (和HashMap)。我們知道,映射操作就像查表一樣,每個(gè)值都存儲(chǔ)在一個(gè)唯一的鍵標(biāo)下。在早期的Java版本中,當(dāng)在映射表中放置表項(xiàng)時(shí),它們是作為Object項(xiàng)存放的。當(dāng)從映射表中檢索表項(xiàng)時(shí),它被作為標(biāo)準(zhǔn)的Object引用來(lái)對(duì)待,即被強(qiáng)制轉(zhuǎn)換成正確的子類以便能夠識(shí)別為它的實(shí)際類型。這與List中存在的危險(xiǎn)相同。要么對(duì)象不正確,要么出現(xiàn)ClassCastException異常,這樣的情況太常見(jiàn)了。

    假定有一個(gè)用于維護(hù)員工數(shù)據(jù)的Employee類。下面給出一些使用HashMap的典型代碼:

    Employee brian = new Employee();
    brian.setName("Brian", "Eubanks");
    brian.setSalary(100000.00);
    brian.setTitle("Boss");

    HashMap employees = new HashMap();
    employees.put("Brian", brian);

    Employee newHire = (Employee) employees.get("Brian");
    newHire.setHireDate(new Date());

    在檢索項(xiàng)目時(shí),最大的危險(xiǎn)位于強(qiáng)制類型轉(zhuǎn)換的過(guò)程中。使用Java 5,不用強(qiáng)制類型轉(zhuǎn)換也可完成此操作,只要使用正確的類型來(lái)實(shí)例化Map。可以對(duì)鍵和值的類型添加約束。在下面的示例中,只允許String鍵和Employee值:
    Employee brian = new Employee();
    brian.setName("Brian", "Eubanks");
    brian.setSalary(100000.00);
    brian.setTitle("Boss");

    HashMap<String,Employee> employees = new HashMap<String,Employee>();
    employees.put("Brian", brian);

    // no cast is necessary here
    Employee newHire = employees.get("Brian");
    newHire.setHireDate(new Date());


    通過(guò)使用類型安全映射,當(dāng)從映射表中檢索表項(xiàng)時(shí)可以避免ClassCastException錯(cuò)誤。這樣做使代碼更加穩(wěn)定并且降低對(duì)映射內(nèi)容的敏感性。但如果代碼必須運(yùn)行在早期版本的Java上,那么將處于不利的情況并且需要暫時(shí)繼續(xù)執(zhí)行強(qiáng)制類型轉(zhuǎn)換。但可以采用下一節(jié)中的方法,創(chuàng)建自己的泛型類。


    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    留言簿(1)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    搜索

    •  

    最新評(píng)論

    閱讀排行榜

    主站蜘蛛池模板: 天天影院成人免费观看| 免费看又黄又无码的网站 | 中文字幕亚洲精品| 亚洲国产人成在线观看| 亚洲熟女综合一区二区三区| 国产精品亚洲а∨天堂2021| 皇色在线免费视频| 3d成人免费动漫在线观看| 成人特黄a级毛片免费视频| 亚洲国产成人爱av在线播放| 久久久综合亚洲色一区二区三区 | a级毛片在线免费| 国产成人精品免费视| 日本免费人成黄页网观看视频| 精品亚洲一区二区三区在线播放| 亚洲专区在线视频| 亚洲人成人无码.www石榴| caoporm碰最新免费公开视频| 69视频在线观看高清免费| 日韩激情淫片免费看| 亚洲精品成人无限看| 亚洲视频在线观看2018| eeuss草民免费| 免费精品国产自产拍在| 亚洲男人在线无码视频| 亚洲欧洲日产国码二区首页| 成a人片亚洲日本久久| 久久成人免费大片| 日本一道在线日本一道高清不卡免费| 亚洲综合图色40p| 中文字幕在线观看亚洲日韩| 不卡视频免费在线观看| 韩国二级毛片免费播放| 国产国拍亚洲精品mv在线观看 | 亚洲精品456在线播放| 特黄特色大片免费| 可以免费看黄的网站| 久久久久亚洲精品天堂久久久久久| 亚洲国产成人资源在线软件| 久久er国产精品免费观看8| 女人与禽交视频免费看 |