當(dāng)前位置:首頁 > IT技術(shù) > 其他 > 正文

用戶自定義類加載器及具體實現(xiàn)
2022-05-11 11:00:11


用戶自定義類加載器

在Java的日常應(yīng)用程序開發(fā)中,類的加載幾乎是由上節(jié)3種類加載器(引導(dǎo)、擴展和系統(tǒng)類加載器)相互配合執(zhí)行的,在必要時,我們還可以自定義類加載器,來定制類的加載方式。

為什么要自定義類加載器

  • 隔離加載類
  • 修改類加載的方式
  • 擴展加載源
  • 防止源碼泄漏

用戶自定義類加載器實現(xiàn)步驟

用戶自定義類加載器及具體實現(xiàn)_加載

關(guān)于ClassLoader

ClassLoader類,它是一個抽象類,其后所有的類加載器都繼承自ClassLoader(不包括啟動類加載器)

用戶自定義類加載器及具體實現(xiàn)_java_02

獲取ClassLoader的幾種方

用戶自定義類加載器及具體實現(xiàn)_加載_03

雙親委派機制

Java虛擬機對class文件采用的是按需加載的方式,也就是說當(dāng)需要使用該類時才會將它的class文件加載到內(nèi)存生成class對象。而且加載某個類的class文件時,Java虛擬機采用的是雙親委派模式,即把請求交由父類處理,它是一種任務(wù)委派模式。

案例分析:

我們自己創(chuàng)建一個 java.lang.String,當(dāng)我們使用String這個類的時候,是加載我們自己寫的String類還是系統(tǒng)給我們提供的String類呢???顯然是系統(tǒng)提供的String。

package chapter01.com.wust.yq;

public class StringTest {

public static void main(String[] args) {
java.lang.String s = new java.lang.String();
System.out.println("hello");
}

}

用戶自定義類加載器及具體實現(xiàn)_類加載器_04

用戶自定義類加載器及具體實現(xiàn)_加載_05

工作原理

用戶自定義類加載器及具體實現(xiàn)_類加載器_06

優(yōu)勢

用戶自定義類加載器及具體實現(xiàn)_java_07


本文摘自 :https://blog.51cto.com/u

開通會員,享受整站包年服務(wù)立即開通 >