<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  執行安全存放:使用類型安全映射

    Java5+

    正如前面討論for循環時看到的那樣,使用泛型有助于簡化代碼并降低出錯概率。for循環會假定ArrayList僅包含Integer對象,因為ArrayList嚴格地被定義為由Integer對象組成。因而當從列表檢索項目時可以避免從Object到Integer的強制類型轉換。

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

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

    假定有一個用于維護員工數據的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());

    在檢索項目時,最大的危險位于強制類型轉換的過程中。使用Java 5,不用強制類型轉換也可完成此操作,只要使用正確的類型來實例化Map。可以對鍵和值的類型添加約束。在下面的示例中,只允許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());


    通過使用類型安全映射,當從映射表中檢索表項時可以避免ClassCastException錯誤。這樣做使代碼更加穩定并且降低對映射內容的敏感性。但如果代碼必須運行在早期版本的Java上,那么將處于不利的情況并且需要暫時繼續執行強制類型轉換。但可以采用下一節中的方法,創建自己的泛型類。


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

    留言簿(1)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    搜索

    •  

    最新評論

    閱讀排行榜

    主站蜘蛛池模板: 亚洲a视频在线观看| 亚洲精品无码久久久久去q| 亚洲欧洲日本精品| 亚洲精品免费观看| 久久久久久久亚洲Av无码| **实干一级毛片aa免费| 久久久亚洲欧洲日产国码是AV| 午夜无码A级毛片免费视频| 久久夜色精品国产嚕嚕亚洲av| 玖玖在线免费视频| 亚洲国产精品热久久| 114级毛片免费观看| 亚洲首页国产精品丝袜| 亚洲AV人无码综合在线观看| a毛片久久免费观看| 亚洲尹人香蕉网在线视颅| 亚洲天堂免费在线| 亚洲精品国产av成拍色拍| 免费国产真实迷j在线观看| 一级毛片aa高清免费观看| 亚洲精品自产拍在线观看| 99久久免费中文字幕精品| 亚洲va精品中文字幕| 免费在线观看亚洲| 色www永久免费网站| 亚洲女人影院想要爱| 免费看美女被靠到爽的视频| 一区二区在线视频免费观看| 亚洲乱亚洲乱淫久久| 久久精品a一国产成人免费网站 | 一级特黄aa毛片免费观看| 亚洲一区在线观看视频| 免费国产精品视频| 三年片在线观看免费大全电影| 久久狠狠爱亚洲综合影院 | 国产精品亚洲αv天堂无码| 99久久精品国产免费| 小说专区亚洲春色校园| 亚洲福利在线视频| 国产免费怕怕免费视频观看| 国产精品视频白浆免费视频|