一直以為JAVA2中自定義classloader的雙親委派模式是:自定義的classloader是繼承自雙親!原來不是這樣的。在《深入JAVA虛擬機(jī)》中有這樣一段話:
“ 為更好地職解雙親委派模型,假設(shè)一個(gè)Java程序創(chuàng)建了一個(gè)名為“GrandMa”的自定義類
裝載器。因?yàn)槌绦騻鬟f了null到 GrandMa的構(gòu)造方法,Grandmn的雙親就是啟動(dòng)類裝載器。過了
一段時(shí)司,程序創(chuàng)建另一個(gè)名為“Mom”的類裝載器。因?yàn)槌绦騻鬟f了G randma的引用到
Mom的構(gòu)造方法,Grandmn的雙親被沒成是一個(gè)自定義的類裝載器,指向Grandma。又過了一段時(shí)
間,程序創(chuàng)建了一個(gè)新的類裝載器“Cindy”,因?yàn)閼?yīng)用程序傳遞了指向Mom的引用到Cindy的構(gòu)
造方法.Cindy的雙親就被設(shè)定為用戶自定義的Mom類裝載器”
原來只要指定自定義類裝載器中的雙親引用就好了,并不是說“繼承自A類裝載器,A就是它的雙親”
“ 為更好地職解雙親委派模型,假設(shè)一個(gè)Java程序創(chuàng)建了一個(gè)名為“GrandMa”的自定義類
裝載器。因?yàn)槌绦騻鬟f了null到 GrandMa的構(gòu)造方法,Grandmn的雙親就是啟動(dòng)類裝載器。過了
一段時(shí)司,程序創(chuàng)建另一個(gè)名為“Mom”的類裝載器。因?yàn)槌绦騻鬟f了G randma的引用到
Mom的構(gòu)造方法,Grandmn的雙親被沒成是一個(gè)自定義的類裝載器,指向Grandma。又過了一段時(shí)
間,程序創(chuàng)建了一個(gè)新的類裝載器“Cindy”,因?yàn)閼?yīng)用程序傳遞了指向Mom的引用到Cindy的構(gòu)
造方法.Cindy的雙親就被設(shè)定為用戶自定義的Mom類裝載器”
原來只要指定自定義類裝載器中的雙親引用就好了,并不是說“繼承自A類裝載器,A就是它的雙親”