ClassLoader 傳遞性
程序在運(yùn)行過(guò)程中窗怒,遇到了一個(gè)未知的類旗国,它會(huì)選擇哪個(gè) ClassLoader 來(lái)加載它呢侍瑟?虛擬機(jī)的策略是使用調(diào)用者 Class 對(duì)象的 ClassLoader 來(lái)加載當(dāng)前未知的類蝎毡。何為調(diào)用者 Class 對(duì)象扰肌?就是在遇到這個(gè)未知的類時(shí)抛寝,虛擬機(jī)肯定正在運(yùn)行一個(gè)方法調(diào)用(靜態(tài)方法或者實(shí)例方法),這個(gè)方法掛在哪個(gè)類上面,那這個(gè)類就是調(diào)用者 Class 對(duì)象盗舰。前面我們提到每個(gè) Class 對(duì)象里面都有一個(gè) classLoader 屬性記錄了當(dāng)前的類是由誰(shuí)來(lái)加載的晶府。
因?yàn)?ClassLoader 的傳遞性,所有延遲加載的類都會(huì)由初始調(diào)用 main 方法的這個(gè) ClassLoader 全全負(fù)責(zé)钻趋,它就是 AppClassLoader川陆。