1. 程式人生 > >類加載器和雙親委派

類加載器和雙親委派

層次 方法 類的加載 實例 ima isa sass 自己 sas

  技術分享

這張圖清晰吧

類加載器的作用不僅僅是實現類的加載,它還與類的的“相等”判定有關,關系著Java“相等”判定方法的返回結果,只有在滿足如下三個類“相等”判定條件,才能判定兩個類相等。

1、兩個類來自同一個Class文件

2、兩個類是由同一個虛擬機加載

3、兩個類是由同一個類加載器加載

Java“相等”判定相關方法:

1、判斷兩個實例對象的引用是否指向內存中同一個實例對象,使用 Class對象的equals()方法,obj1.equals(obj2);

2、判斷實例對象是否為某個類、接口或其子類、子接口的實例對象,使用Class對象的isInstance()方法,class.isInstance(obj);

3、判斷實例對象是否為某個類、接口的實例,使用instanceof關鍵字,obj instanceof class;

4、判斷一個類是否為另一個類本身或其子類、子接口,可以使用Class對象的isAssignableFrom()方法,class1.isAssignableFrom(class2)。

類加載器的雙親委派加載機制(重點)當一個類收到了類加載請求,他首先不會嘗試自己去加載這個類,而是把這個請求委派給父類去完成,每一個層次類加載器都是如此,因此所有的加載請求都應該傳送到啟動類加載其中,只有當父類加載器反饋自己無法完成這個請求的時候(在它的加載路徑下沒有找到所需加載的Class),子類加載器才會嘗試自己去加載。

類加載器和雙親委派