Java代碼在編譯好之後會編程.class字節碼文件,加載到Java虛擬機中運行,本篇主要關於類加載器機制。
Java中的類加載器大致可以分爲兩類,一類是系統提供的,一類是java應用開發人員編寫的。系統提供的類加載器主要有以下三個:
1、啓動類加載器:加載的是lib目錄中的類加載出來,包名是java.xxx(如:java.lang.Object)
2、應用程序加載器:加載的是lib/ext目錄下的類,包名是javax.xxx(如:javax.swing.xxx)
3、應用程序類的加載器:這個加載器就是ClassLoader的getSystemClassLoader的返回值,這個也是默認的類加載器。
自定義類加載器:個性化處理
遵循樹形結構:
雙親委派機制
雙親委派機制是指當一個類加載器收到一個類加載請求時,該類加載器首先會把請求委派給父類加載器。每個類加載器都是如此,只有在父類加載器在自己的搜索範圍內找不到指定類時,子類加載器纔會嘗試自己去加載。
雙親委派模型的優點:
總結:
雙親委派模型的意義在於不同的類之間分別負責所搜索範圍內的類的加載工作,這樣能保證同一個類在使用中才不會出現不相等的類,舉例:如果出現了兩個不同的Object,明明是該相等的業務邏輯就會不相等,應用程序也會變得混亂。