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

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

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

    posts - 89,  comments - 98,  trackbacks - 0
    在初始化一個類,生成一個實例的時候,newInstance()方法和new關鍵字除了一個是方法,一個是關鍵字外,最主要有什么區別?它們的區別在于創建對象的方式不一樣,前者是使用類加載機制,后者是創建一個新類。那么為什么會有兩種創建對象方式?這主要考慮到軟件的可伸縮、可擴展和可重用等軟件設計思想。?

    ????Java中工廠模式經常使用newInstance()方法來創建對象,因此從為什么要使用工廠模式上可以找到具體答案。?例如:
    ????class?c?=?Class.forName(“Example”);
    ????factory?=?(ExampleInterface)c.newInstance();?

    ????其中ExampleInterface是Example的接口,可以寫成如下形式:?
    ????String?className?=?"Example";
    ????class?c?=?Class.forName(className);
    ????factory?=?(ExampleInterface)c.newInstance();

    ????進一步可以寫成如下形式:
    ????String?className?=?readfromXMlConfig;//從xml?配置文件中獲得字符串
    ????class?c?=?Class.forName(className);
    ????factory?=?(ExampleInterface)c.newInstance();

    ????上面代碼已經不存在Example的類名稱,它的優點是,無論Example類怎么變化,上述代碼不變,甚至可以更換Example的兄弟類Example2?,?Example3?,?Example4……,只要他們繼承ExampleInterface就可以。

    ????從JVM的角度看,我們使用關鍵字new創建一個類的時候,這個類可以沒有被加載。但是使用newInstance()方法的時候,就必須保證:1、這個類已經加載;2、這個類已經連接了。而完成上面兩個步驟的正是Class的靜態方法forName()所完成的,這個靜態方法調用了啟動類加載器,即加載java?API的那個加載器。

    ????現在可以看出,newInstance()實際上是把new這個方式分解為兩步,即首先調用Class加載方法加載某個類,然后實例化。?這樣分步的好處是顯而易見的。我們可以在調用class的靜態加載方法forName時獲得更好的靈活性,提供給了一種降耦的手段。

    ????最后用最簡單的描述來區分new關鍵字和newInstance()方法的區別:
    ????newInstance:?弱類型。低效率。只能調用無參構造。?
    ????new:?強類型。相對高效。能調用任何public構造。
    posted on 2006-09-22 09:08 水煮三國 閱讀(375) 評論(0)  編輯  收藏 所屬分類: J2SE
    <2006年9月>
    272829303112
    3456789
    10111213141516
    17181920212223
    24252627282930
    1234567

    常用鏈接

    留言簿(4)

    隨筆分類(85)

    隨筆檔案(89)

    文章分類(14)

    文章檔案(42)

    收藏夾(37)

    java

    oracle

    Sybase

    搜索

    •  

    積分與排名

    • 積分 - 211642
    • 排名 - 266

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 免费鲁丝片一级观看| 97人妻无码一区二区精品免费| 国产免费人成视频在线观看 | 在线亚洲97se亚洲综合在线| 亚洲综合无码无在线观看| 日本免费xxxx色视频| 亚洲AV无码日韩AV无码导航| 免费a级毛片无码a∨免费软件 | 久久亚洲精品无码观看不卡| 亚洲AV无码专区国产乱码4SE | 久久综合AV免费观看| 亚洲三级视频在线| 91视频国产免费| 久久精品国产精品亚洲艾草网美妙| 美女视频黄频a免费| 91福利视频免费观看| 国产乱弄免费视频| 无套内射无矿码免费看黄| 亚洲国产精品成人久久蜜臀 | 成人伊人亚洲人综合网站222| 白白色免费在线视频| 国产亚洲精品影视在线产品| a色毛片免费视频| 久久精品国产精品亚洲毛片| 波多野结衣免费在线观看| 亚洲欧美成人一区二区三区| 亚洲七七久久精品中文国产| 久久er国产精品免费观看8| 亚洲AV无码1区2区久久| 国产成人 亚洲欧洲| 国产亚洲精久久久久久无码77777| a级成人免费毛片完整版| 亚洲日本国产乱码va在线观看| 午夜男人一级毛片免费| 一级中文字幕免费乱码专区| 亚洲国产精品无码久久SM| 中文字幕无码视频手机免费看| 牛牛在线精品观看免费正| 老司机亚洲精品影院无码 | 久99精品视频在线观看婷亚洲片国产一区一级在线 | 亚洲精品第一国产综合精品99|