激情欧美日韩一区二区,浪货撅高贱屁股求主人调教视频,精品无码成人片一区二区98,国产高清av在线播放,色翁荡息又大又硬又粗视频

java類(lèi)加載器的樹(shù)狀組織結構

時(shí)間:2024-10-14 12:18:29 JAVA認證 我要投稿
  • 相關(guān)推薦

java類(lèi)加載器的樹(shù)狀組織結構

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

  系統提供的類(lèi)加載器主要有下面三個(gè):

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

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

  圖 1. 類(lèi)加載器樹(shù)狀組織結構示意圖

  代碼清單 1演示了類(lèi)加載器的樹(shù)狀組織結構。

  清單 1. 演示類(lèi)加載器的樹(shù)狀組織結構

 

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();

 

}

 

}

 

}

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

  清單 2. 演示類(lèi)加載器的樹(shù)狀組織結構的運行結果

 

sun.misc.Launcher$AppClassLoader@9304b1

 

sun.misc.Launcher$ExtClassLoader@190d11

 

 

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

【java類(lèi)加載器的樹(shù)狀組織結構】相關(guān)文章:

Java定時(shí)器代碼的編寫(xiě)06-16

企業(yè)項目管理組織結構09-02

Java時(shí)間類(lèi)及函數用法07-26

java實(shí)現web服務(wù)器的方法10-14

Java編寫(xiě)計算器的的常見(jiàn)做法08-12

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

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

組織結構與企業(yè)戰略的匹配06-04

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

Java認證考試知識點(diǎn):Java時(shí)間類(lèi)的函數09-08

激情欧美日韩一区二区,浪货撅高贱屁股求主人调教视频,精品无码成人片一区二区98,国产高清av在线播放,色翁荡息又大又硬又粗视频