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

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

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

    數據加載中……
    幾種類加載方式的區別
    虛擬機加載類的途徑:

    1、Dog dog = new Dog();
    這個動作會導致常量池的解析,Dog類被隱式裝載。
    如果當前ClassLoader無法找到Dog,則拋出NoClassDefFoundError。

    2、Class clazz = Class.forName(“Dog”);
       Object dog =clazz.newInstance();
    通過反射加載類型,并創建對象實例
    如果無法找到Dog,則拋出ClassNotFoundException。

    3、Class clazz = classLoader.loadClass(“Dog”);
       Object dog =clazz.newInstance();
    通過反射加載類型,并創建對象實例
    如果無法找到Dog,則拋出ClassNotFoundException。

    那么,1和2和3究竟有什么區別呢?分別用于什么情況呢?

    1和2使用的類加載器是相同的,都是當前類加載器。(即:this.getClass.getClassLoader)。
    3由用戶指定類加載器。

    如果需要在當前類路徑以外尋找類,則只能采用第3種方式。第3種方式加載的類與當前類分屬不同的命名空間。
    當前類加載器命名空間對其不可見。當然,如果被加載類的超類對于當前類命名空間可見的話,則可以進行強制轉型。

    第1和第2種情況區別不大。如果,Dog類在編譯時無法得到,則使用第2種方式。

    另外,第1種和第2種都會導致類被初始化,即:執行類的靜態初始化語句,而第3種情況不會。
    另外注意,第1種拋出Error,第2、3種拋出Exception,它們分屬于不同的異常/錯誤分支。

    -----------------------------

    對象實例化方式:
    1、new Dog();
    2、clazz.newInstance();或者clazz.getConstructor(...).newInstance(...);
    3、Object.clone();//通過本地方法進行復制
    4、反序列化 

    posted on 2008-11-25 14:38 flyleer 閱讀(1036) 評論(0)  編輯  收藏

    主站蜘蛛池模板: 三级毛片在线免费观看| h在线看免费视频网站男男| 日批日出水久久亚洲精品tv| 亚洲免费中文字幕| 噼里啪啦免费观看高清动漫4| 亚洲国产精品一区| 亚洲免费中文字幕| 亚洲Aⅴ无码一区二区二三区软件| 亚洲AV无码一区二区三区久久精品| 手机在线免费视频| 青青青亚洲精品国产| 免费欧洲美女牲交视频| 日日摸夜夜添夜夜免费视频| 国产亚洲精品国看不卡| 国内精品免费在线观看| 免费一级做a爰片久久毛片潮喷| 鲁啊鲁在线视频免费播放| 中文字幕亚洲第一| 国产婷婷成人久久Av免费高清 | 日韩视频在线观看免费| 亚洲va无码va在线va天堂| 最近中文字幕完整免费视频ww| 亚洲三级在线播放| 国产真实伦在线视频免费观看| 亚洲精品456在线播放| 在线免费视频一区| 免费看一级高潮毛片| 亚洲高清国产AV拍精品青青草原| 51在线视频免费观看视频| 亚洲精品一卡2卡3卡四卡乱码| 亚洲精品线路一在线观看| 人妻无码一区二区三区免费| 亚洲熟妇成人精品一区| 国产精品亚洲mnbav网站 | 日韩免费人妻AV无码专区蜜桃| 在线综合亚洲欧洲综合网站| 亚洲五月午夜免费在线视频| 最近中文字幕免费完整| 日韩久久无码免费毛片软件| 久久精品国产亚洲精品2020| 热99re久久精品精品免费|