1、類加載器
1.什麼是類加載器,做用是什麼?
類加載器就加載字節碼文件(.class)java
2.類加載器的種類
類加載器有三種,不一樣類加載器加載不一樣的數組
1)BootStrap:引導類加載器:加載都是最基礎的文件spa
2)ExtClassLoader:擴展類加載器:加載都是基礎的文件代理
3)AppClassLoader:應用類加載器:三方jar包和本身編寫java文件code
怎麼得到類加載器?(重點)對象
ClassLoader 字節碼對象.getClassLoader();blog
2、動態代理
1.什麼是代理(中介)
目標對象/被代理對象 ------ 房主:真正的租房的方法接口
代理對象 ------- 黑中介:有租房子的方法(調用房主的租房的方法)內存
執行代理對象方法的對象 ---- 租房的人ci
流程:咱們要租房----->中介(租房的方法)------>房主(租房的方法)
抽象:調用對象----->代理對象------>目標對象
2.動態代理
動態代理:不用手動編寫一個代理對象,不須要一一編寫與目標對象相同的方法,這個過程,在運行時 的內存中動態生成代理對象。------字節碼對象級別的代理對象
動態代理的API:
在jdk的API中存在一個Proxy中存在一個生成動態代理的的方法newProxyInstance
|
newProxyInstance |
返回值:Object就是代理對象
參數:loader:表明與目標對象相同的類加載器-------目標對象.getClass().getClassLoader()
interfaces:表明與目標對象實現的全部的接口字節碼對象數組
h:具體的代理的操做,InvocationHandler接口
注意:JDK的Proxy方式實現的動態代理 目標對象必須有接口 沒有接口不能實現jdk版動態代理