• <sub id="h4knl"><ol id="h4knl"></ol></sub>
    <sup id="h4knl"></sup>
      <sub id="h4knl"></sub>

      <sub id="h4knl"><ol id="h4knl"><em id="h4knl"></em></ol></sub><s id="h4knl"></s>
      1. <strong id="h4knl"></strong>

      2. java類加載器的樹狀組織結構

        時間:2024-10-14 12:18:29 JAVA認證 我要投稿
        • 相關推薦

        java類加載器的樹狀組織結構

          Java 中的類加載器大致可以分成兩類,一類是系統提供的,另外一類則是由 Java 應用開發人員編寫的。那么java類加載器有哪些,下面yjbys小編為大家一一解讀!

          系統提供的類加載器主要有下面三個:

          引導類加載器(bootstrap class loader):它用來加載 Java 的核心庫,是用原生代碼來實現的,并不繼承自 java.lang.ClassLoader。擴展類加載器(extensions class loader):它用來加載 Java 的擴展庫。Java 虛擬機的實現會提供一個擴展庫目錄。該類加載器在此目錄里面查找并加載 Java 類。系統類加載器(system class loader):它根據 Java 應用的類路徑(CLASSPATH)來加載 Java 類。一般來說,Java 應用的類都是由它來完成加載的。可以通過 ClassLoader.getSystemClassLoader()來獲取它。除了系統提供的類加載器以外,開發人員可以通過繼承 java.lang.ClassLoader類的方式實現自己的類加載器,以滿足一些特殊的需求。

          除了引導類加載器之外,所有的類加載器都有一個父類加載器。通過 表 1中給出的 getParent()方法可以得到。對于系統提供的類加載器來說,系統類加載器的父類加載器是擴展類加載器,而擴展類加載器的父類加載器是引導類加載器;對于開發人員編寫的類加載器來說,其父類加載器是加載此類加載器 Java 類的類加載器。因為類加載器 Java 類如同其它的 Java 類一樣,也是要由類加載器來加載的。一般來說,開發人員編寫的類加載器的父類加載器是系統類加載器。類加載器通過這種方式組織起來,形成樹狀結構。樹的根節點就是引導類加載器。圖 1中給出了一個典型的類加載器樹狀組織結構示意圖,其中的箭頭指向的是父類加載器。

          圖 1. 類加載器樹狀組織結構示意圖

          代碼清單 1演示了類加載器的樹狀組織結構。

          清單 1. 演示類加載器的樹狀組織結構

         

        public class ClassLoaderTree {

         

        public static void main(String[] args) {

         

        ClassLoader loader = ClassLoaderTree.class.getClassLoader();

         

        while (loader != null) {

         

        System.out.println(loader.toString());

         

        loader = loader.getParent();

         

        }

         

        }

         

        }

          每個 Java 類都維護著一個指向定義它的類加載器的引用,通過 getClassLoader()方法就可以獲取到此引用。代碼清單 1中通過遞歸調用getParent()方法來輸出全部的父類加載器。代碼清單 1的運行結果如 代碼清單 2所示。

          清單 2. 演示類加載器的樹狀組織結構的運行結果

         

        sun.misc.Launcher$AppClassLoader@9304b1

         

        sun.misc.Launcher$ExtClassLoader@190d11

         

         

          如 代碼清單 2所示,第一個輸出的是 ClassLoaderTree類的類加載器,即系統類加載器。它是 sun.misc.Launcher$AppClassLoader類的實例;第二個輸出的是擴展類加載器,是 sun.misc.Launcher$ExtClassLoader類的實例。需要注意的是這里并沒有輸出引導類加載器,這是由于有些 JDK 的實現對于父類加載器是引導類加載器的情況,getParent()方法返回 null。

        《&.doc》
        将本文的Word文档下载到电脑,方便收藏和打印
        推荐度:
        点击下载文档

        【java類加載器的樹狀組織結構】相關文章:

        Java定時器代碼的編寫06-16

        企業項目管理組織結構09-02

        Java時間類及函數用法07-26

        java實現web服務器的方法10-14

        Java編寫計算器的的常見做法08-12

        Java Web服務器(應用服務器)10-03

        java語句及其控制結構題庫及答案06-24

        組織結構與企業戰略的匹配06-04

        解析"項目管理"知識的組織結構05-23

        Java認證考試知識點:Java時間類的函數09-08

        在线咨询
        国产高潮无套免费视频_久久九九兔免费精品6_99精品热6080YY久久_国产91久久久久久无码
      3. <sub id="h4knl"><ol id="h4knl"></ol></sub>
        <sup id="h4knl"></sup>
          <sub id="h4knl"></sub>

          <sub id="h4knl"><ol id="h4knl"><em id="h4knl"></em></ol></sub><s id="h4knl"></s>
          1. <strong id="h4knl"></strong>

          2. 欧美精品AⅤ免费久久 | 在线播放永久免费 | 一级a爱做片观看免费国产 日韩一级精品久久久久 | 日本免费人妖最新一区 | 玩弄丰满少妇视频 | 午夜福利成人污在线观看 |

            java類加載器的樹狀組織結構

              Java 中的類加載器大致可以分成兩類,一類是系統提供的,另外一類則是由 Java 應用開發人員編寫的。那么java類加載器有哪些,下面yjbys小編為大家一一解讀!

              系統提供的類加載器主要有下面三個:

              引導類加載器(bootstrap class loader):它用來加載 Java 的核心庫,是用原生代碼來實現的,并不繼承自 java.lang.ClassLoader。擴展類加載器(extensions class loader):它用來加載 Java 的擴展庫。Java 虛擬機的實現會提供一個擴展庫目錄。該類加載器在此目錄里面查找并加載 Java 類。系統類加載器(system class loader):它根據 Java 應用的類路徑(CLASSPATH)來加載 Java 類。一般來說,Java 應用的類都是由它來完成加載的。可以通過 ClassLoader.getSystemClassLoader()來獲取它。除了系統提供的類加載器以外,開發人員可以通過繼承 java.lang.ClassLoader類的方式實現自己的類加載器,以滿足一些特殊的需求。

              除了引導類加載器之外,所有的類加載器都有一個父類加載器。通過 表 1中給出的 getParent()方法可以得到。對于系統提供的類加載器來說,系統類加載器的父類加載器是擴展類加載器,而擴展類加載器的父類加載器是引導類加載器;對于開發人員編寫的類加載器來說,其父類加載器是加載此類加載器 Java 類的類加載器。因為類加載器 Java 類如同其它的 Java 類一樣,也是要由類加載器來加載的。一般來說,開發人員編寫的類加載器的父類加載器是系統類加載器。類加載器通過這種方式組織起來,形成樹狀結構。樹的根節點就是引導類加載器。圖 1中給出了一個典型的類加載器樹狀組織結構示意圖,其中的箭頭指向的是父類加載器。

              圖 1. 類加載器樹狀組織結構示意圖

              代碼清單 1演示了類加載器的樹狀組織結構。

              清單 1. 演示類加載器的樹狀組織結構

             

            public class ClassLoaderTree {

             

            public static void main(String[] args) {

             

            ClassLoader loader = ClassLoaderTree.class.getClassLoader();

             

            while (loader != null) {

             

            System.out.println(loader.toString());

             

            loader = loader.getParent();

             

            }

             

            }

             

            }

              每個 Java 類都維護著一個指向定義它的類加載器的引用,通過 getClassLoader()方法就可以獲取到此引用。代碼清單 1中通過遞歸調用getParent()方法來輸出全部的父類加載器。代碼清單 1的運行結果如 代碼清單 2所示。

              清單 2. 演示類加載器的樹狀組織結構的運行結果

             

            sun.misc.Launcher$AppClassLoader@9304b1

             

            sun.misc.Launcher$ExtClassLoader@190d11

             

             

              如 代碼清單 2所示,第一個輸出的是 ClassLoaderTree類的類加載器,即系統類加載器。它是 sun.misc.Launcher$AppClassLoader類的實例;第二個輸出的是擴展類加載器,是 sun.misc.Launcher$ExtClassLoader類的實例。需要注意的是這里并沒有輸出引導類加載器,這是由于有些 JDK 的實現對于父類加載器是引導類加載器的情況,getParent()方法返回 null。