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

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

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

    呆呆向前沖的blog

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      78 隨筆 :: 43 文章 :: 5 評論 :: 74 Trackbacks

    隱式方法:new
    顯式方法:
    1。java.lang.Class的forName方法
    2。java.lang.ClassLoader里的loadClass方法


    ◆ 無法自行產生Class的實體,因為構造函數聲明為private。
    ◇ 只能通過Object的getClass方法,或者Class.forName("類名")獲得。
    ◆ Class類的實體在第一次載入內存時就建立了。以后在程序中產生Class代表的類的實體,其內部都會有個字段記錄著這個Class類所在的位置。
    ◇  可以把每個Class類的實體當作是某個類(*.class)在內存中的代理。
    ◆ 在Java中,每個類都是由某個類加載器(ClassLoader)來載入的,因此在Class類的實體中,由字段記錄載入它的ClassLoader的實體。如果該字段是null,不代表它不是由類裝載器所載入,而是代表這個類由引導式裝載器(bootstrap loader)載入。但是這個裝載器不是java編寫的,所以沒有實體。
    classloader.jpg
                                                                                        圖1
    注意:系統里同時存在多個ClassLoader實體。而且一個類裝載器可以載入多個類

    ★ 使用已有類裝載器

    1        Office off = new Office();
    2        ClassLoader loader = off.getClass().getClassLoader();
    3        Class c = loader.loadClass(args[0]);
    4        Object o = c.newInstance();

    注意:loadClass方法加載類時不會自動調用靜態初始化塊(static塊),必須等到第一次實體化該類時,才會調用。這與forName時傳入第二個參數為false的效果相同。

    下面是上述代碼的另一種寫法:

    1        Class cb = Office.class;
    2        ClassLoader loader = cb.getClassLoader();
    3        Class c = loader.loadClass(args[0]);        
    4        Object o = c.newInstance();

    ★ 自己建立類裝載器來載入類

    URLClassLoader

    ★ 類裝載器的階層體系

    Java程序運行流程:

    shur輸入java ***.class,java.exe根據自己的搜索邏輯找到JRE,接著找到位于JRE中的jvm.dll(真正的java虛擬機)。最后載入這個動態鏈接庫,激活java虛擬機。
          虛擬機一旦激活,會先做一些初始化操作,如獲取系統參數。
         初始化完成后,產生第一個類裝載器 Bootstrap Loader。然后做一些基本的初始化,然后它載入sun.misc命名空間底下的Launcher.java之中的ExtClassLoader,并設置其parent為null。然后Bootstrap Loader會繼續載入sun.misc命名空間下的Launcher.java之中的AppClassLoader,并設置其parent為剛載入的ExtClassLoader實體
          最后由AppClassLoader負責載入***.class。
          注意:上述三個類裝載器搜索類的路徑都是載入時讀取的,分別是“sun.boot.class.path”、“java.ext.dirs”、“java.class.path”,而且在虛擬機中只保留一份。在系統運行過程中不可能動態改變,除非使用新的類裝載器。

    ★ 委托模型

          類裝載器有載入類的需求時,會先請示其Parent使用其搜索路徑幫忙載入。如果Parent找不到,才由自己依照自己的搜索路徑搜索類。







     

    posted on 2005-07-19 00:57 呆呆向前沖的blog 閱讀(348) 評論(0)  編輯  收藏 所屬分類: 工作:Java技術
    主站蜘蛛池模板: 亚洲男人天堂av| 亚洲天堂在线播放| 国产亚洲视频在线| 日韩精品视频免费网址| 亚洲综合欧美色五月俺也去| 精品成在人线AV无码免费看| 亚洲人成网网址在线看| av免费不卡国产观看| 中文字幕亚洲情99在线| 日本一道一区二区免费看| 337P日本欧洲亚洲大胆精品 | 国产亚洲视频在线| 亚洲国产精品一区二区第四页| 无套内谢孕妇毛片免费看看 | 免费无码黄网站在线观看| 精品亚洲福利一区二区| 亚洲国产综合久久天堂| 三年片免费观看大全国语| 亚洲成人动漫在线| 四虎永久在线精品免费观看视频| 在线综合亚洲欧洲综合网站 | 久久国产精品成人片免费| 亚洲1区1区3区4区产品乱码芒果| 国产精品成人免费视频网站京东 | 亚洲一久久久久久久久| 国产gav成人免费播放视频| 国产在线播放线91免费| 久久狠狠高潮亚洲精品| 国产午夜影视大全免费观看| 久久久WWW免费人成精品| 久久精品国产亚洲AV无码麻豆| 免费看美女让人桶尿口| 久久毛片免费看一区二区三区| 久久久久亚洲AV成人片| 日本一道在线日本一道高清不卡免费| aa在线免费观看| 亚洲精品国产国语| 国产亚洲成人久久| 精品熟女少妇AV免费观看| 黄 色一级 成 人网站免费| 亚洲国产成人久久77|