注解 和 動(dòng)態(tài)代理

步驟

1.創(chuàng)建一個(gè)@interface
2.String value();抽象方法用以接收數(shù)據(jù)
3.使用元注解,描述自定義注解
4.@Target指定注解可以加在哪里
ElementType.TYPE:可在類和接口上面
ElementType.METHOD:可方法上
ElementType.FIELD:可在屬性
5.@Retention指定注解在什么時(shí)候有用
RetentionPolicy.RUNTIME:注解保留到運(yùn)行時(shí)
RetentionPolicy.ClASS:注解保留到Class文件中
RetentionPolicy.SOURCE:注解保留到j(luò)ava編譯時(shí)期
@Inherited可以被繼承

Paste_Image.png


Paste_Image.png


Paste_Image.png


動(dòng)態(tài)代理:

①被代理類必須實(shí)現(xiàn)一個(gè)接口(任意接口)

Paste_Image.png

②創(chuàng)建一個(gè)類實(shí)現(xiàn)InvocationHandler,該類用來(lái)對(duì)象代理對(duì)象進(jìn)行方法的增強(qiáng)
③在invoke()方法中調(diào)用被代理對(duì)象的方法,并且添加增強(qiáng)的代碼

Paste_Image.png

④通過(guò)Proxy.newProxyInstance(ClasLoader, Class, InvovationHandler)創(chuàng)建代理類對(duì)象
⑤調(diào)用代理對(duì)象的方法

Paste_Image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容