this.class.getClassLoader()怎麼理解?
this.class.getClassLoader()怎麼理解?
java是面嚮物件語言,物件導向的語言的宗旨就是萬事萬物皆物件,那麼類也是一個物件,類裡面的屬性和方法也是物件。java裡面的所有的類都是Class類的物件,這個this.class是獲得這個類相對於Class類的物件。後面的方法是獲得這個類物件的載入器。
只有Class類才有getClassLoader()方法呀~
可以這麼想,我們平時講述某某類,但是我們並沒有說這個類怎麼和虛擬機器打交道,虛擬機器怎麼識別這個類.總不能全靠字串吧.
所以呢java就設計了Class這個類.用於虛擬機器對類的管理.當一個類被虛擬機器裝載完畢的時候,就會建立一個Class類的例項,對於類A就是A.class,對於類B就是B.class.
Class類也提供了許多方法來獲取類的資訊.
要知道,類的裝載器分為 "啟動類裝載器 ", "使用者定義裝載器 ".它不止一種
Class類需要儲存這些資訊.
getClassLoader()是用來獲取這個資訊的
類載入器主要分三種:bootstrap(由C語言編寫,固化在jvm上)、ExtClassLoader、AppClassLoader。而bootstrao主要載入rt.jar,ExtClassLoader主要載入Jdk安裝路徑/jre/lib/ext下的位元組碼,AppClassLoader主要載入ClassPath下的位元組碼,類載入器的委託載入原理,首先載入類一直交給父類載入器載入,一直提交到bootstrap,當父類載入器載入不到時,在一層層的返回給下一級載入器載入!
從1.2版本開始,Java引入了雙親委託模型,從而更好的保證Java平臺的安全。在此模型下,當一個裝載器被請求裝載某個類時,它首先委託自己的parent去裝載,若parent能裝載,則返回這個類所對應的Class物件,若parent不能裝載,則由parent的請求者去裝載。
如圖1所示,loader2的parent為loader1,loader1的parent為system class loader。假設loader2被要求裝載類MyClass,在parent delegation模型下,loader2首先請求loader1代為裝載,loader1再請求系統類裝載器去裝載MyClass。若系統裝載器能成功裝載,則將MyClass所對應的Class物件的reference返回給loader1,loader1再將reference返回給loader2,從而成功將類MyClass裝載進虛擬機器。若系統類裝載器不能裝載MyClass,loader1會嘗試裝載MyClass,若loader1也不能成功裝載,loader2會嘗試裝載。若所有的parent及loader2本身都不能裝載,則裝載失敗。
相關文章
- 怎麼理解Condition
- 防火牆是什麼?怎麼理解?防火牆
- 後設資料,怎麼理解?
- 指令碼語言怎麼理解指令碼
- 怎麼樣理解依賴注入?依賴注入
- 這種死鎖怎麼理解
- 多租戶是什麼意思?怎麼理解?
- 怎麼理解php的中介軟體PHP
- 怎麼分析和理解golang的pprofGolang
- 怎麼通俗易懂的理解OSPF?
- 災備是什麼意思?怎麼簡單理解?
- 【BGP乾貨】怎麼理解BGP協議?協議
- 怎麼理解docker的本質是程式Docker
- 請問測試中 Gauge 的 [Concept] 怎麼翻譯,怎麼理解。
- 怎麼理解onStart可見但不可互動
- MySQL Redo log頁內邏輯怎麼理解MySql
- 老弟問我,RocketMQ 中的 ProcessQueue 怎麼理解?MQ
- SQLSERVER 快照隔離級別 到底怎麼理解?SQLServer
- 語義化的HTML結構怎麼理解HTML
- PYTORCH中的學習率怎麼理解PyTorch
- 防火牆 搜尋 釋出 防火牆是什麼?怎麼理解?防火牆
- JS每日一題:vue中keepalive怎麼理解?JS每日一題Vue
- 熱備與冷備分別是什麼意思?怎麼通俗理解?
- 雲端計算面試常見問題,怎麼理解shell?面試
- 怎麼樣去理解 Python 中的裝飾器Python
- 怎樣理解 cosocket
- SAP CRM WebClient UI的on_new_focus應該怎麼理解WebclientUI
- 怎麼理解:“幣圈一天,人間十年”
- Java面試題分享:怎麼回答你對Spring的理解?Java面試題Spring
- 怎麼理解獨立伺服器和虛擬機器伺服器虛擬機
- 怎麼理解SQL的四個事務隔離級別?SQL
- 如何理解網站運營 怎麼做好網站運營?網站
- 怎麼理解今年 CV 比較火的擴散模型(DDPM)?模型
- 什麼是物件?什麼是抽象?怎麼理解物件導向的程式設計思想?物件抽象程式設計
- 怎麼徹底理解悲觀鎖與樂觀鎖?來,圖文並茂輕鬆理解!
- 當外國人玩《山海旅人》,他們怎麼理解中國文化?
- [譯] 理解非同步 JavaScript-學習JavaScript是怎麼工作的非同步JavaScript
- Handler怎麼進行執行緒通訊?Handler原理解讀執行緒