????? 關于Java類加載器,我們都知道Java虛擬機有很多的類加載器,什么什么哦,這里說EXT 加載器,主要是加載EXT中的jar包中的類,而系統類加載器是我們在代碼中使用的類的加載,很顯然EXT加載器在JVM啟動的時候就已經加載了,在整個JVM中只會存在一個EXT加載器加載的類,而我們使用系統類加載器價值的類,再我們重新調用該類的時候也許會重新加載,或許不會,誰知道呢?起碼我知道domino代理每次運行都會使用系統加載器加載該類,而EXT只會在代理JVM啟動的時候加載一次,似乎不符合我們以前學的知識,誰知道IBM是怎么做的。
???? 對于EXT加載器加載的類,和系統類加載的類,兩者是不相同的,也就是加載了兩個該類的Class對象,比如說ext jar包中的com.you.Test類和我們自定義的com.you.Test類會在使用的時候加載兩個類Class對象,他們生成的對象是不相等的。
??? 如果我們這邊定義了一個com.you.Test類,然后ext jar包里面有一個類用來持有該類對象(暫時叫test),OK,當我們的加載的com.you.Test的Class類對象被回收后,我們將無法把test對象轉化成com.you.Test對象了,使用 test instanceof com.you.Test也會返回false,這是因為我們沒有一個全局的com.you.Test的Class對象,當我們的程序再一次加載com.you.Test的Class對象時,test 已經不是這個Class對象的實例了。
?? 完全的確定一個對象,是通過 類加載器+包名+類名,不同的加載器加載的類,哪怕包名和類名完全一致,他們也不是同一種類型,因為不同的類加載器分別加載了該類,生成了不同的Class對象。
?? 思路混亂,不知所云,但也算有感