<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)  編輯  收藏

    主站蜘蛛池模板: 中文字幕在线成人免费看| 99亚洲男女激情在线观看| 丁香花在线视频观看免费| 少妇亚洲免费精品| 污污污视频在线免费观看| 免费国产成人午夜私人影视 | 亚洲精品视频在线| 99热在线免费播放| 18gay台湾男同亚洲男同| 久久久精品2019免费观看| 亚洲色图综合网站| 中文字幕无码成人免费视频| 亚洲国产精品日韩在线观看| 无码人妻久久一区二区三区免费丨| 亚洲免费人成视频观看| 成人免费视频软件网站| 国产精品亚洲а∨天堂2021| av无码东京热亚洲男人的天堂| 一级毛片免费毛片毛片| 亚洲精品乱码久久久久久蜜桃不卡| 黄页免费在线观看| 亚洲成人黄色网址| 国产无遮挡又黄又爽免费视频| 九九视频高清视频免费观看| 亚洲第一极品精品无码久久| 在线观看免费中文视频| 亚洲乱码一二三四区国产| 曰皮全部过程视频免费国产30分钟| 一级毛片在线完整免费观看| 久久亚洲国产精品五月天| 97在线观免费视频观看| 青青免费在线视频| 亚洲色图在线播放| 日韩在线视频免费看| 人妻在线日韩免费视频| 亚洲精品免费网站| 奇米影视亚洲春色| 成人免费网站在线观看| 国产精品免费久久久久久久久 | 亚洲AV成人精品日韩一区 | 久久亚洲中文字幕精品一区四 |