用戶自定義類加載器
在Java的日常應(yīng)用程序開(kāi)發(fā)中,類的加載幾乎是由上節(jié)3種類加載器(引導(dǎo)、擴(kuò)展和系統(tǒng)類加載器)相互配合執(zhí)行的,在必要時(shí),我們還可以自定義類加載器,來(lái)定制類的加載方式。
為什么要自定義類加載器
- 隔離加載類
- 修改類加載的方式
- 擴(kuò)展加載源
- 防止源碼泄漏
用戶自定義類加載器實(shí)現(xiàn)步驟
關(guān)于ClassLoader
ClassLoader類,它是一個(gè)抽象類,其后所有的類加載器都繼承自ClassLoader(不包括啟動(dòng)類加載器)
獲取ClassLoader的幾種方
雙親委派機(jī)制
Java虛擬機(jī)對(duì)class文件采用的是按需加載的方式,也就是說(shuō)當(dāng)需要使用該類時(shí)才會(huì)將它的class文件加載到內(nèi)存生成class對(duì)象。而且加載某個(gè)類的class文件時(shí),Java虛擬機(jī)采用的是雙親委派模式,即把請(qǐng)求交由父類處理,它是一種任務(wù)委派模式。
案例分析:
我們自己創(chuàng)建一個(gè) java.lang.String,當(dāng)我們使用String這個(gè)類的時(shí)候,是加載我們自己寫(xiě)的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");
}
}
工作原理
優(yōu)勢(shì)
本文摘自 :https://blog.51cto.com/u