溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

java中不同代理的區(qū)別有哪些

發(fā)布時(shí)間:2021-04-30 14:28:46 來源:億速云 閱讀:104 作者:小新 欄目:編程語言

小編給大家分享一下java中不同代理的區(qū)別有哪些,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

java基本數(shù)據(jù)類型有哪些

Java的基本數(shù)據(jù)類型分為:1、整數(shù)類型,用來表示整數(shù)的數(shù)據(jù)類型。2、浮點(diǎn)類型,用來表示小數(shù)的數(shù)據(jù)類型。3、字符類型,字符類型的關(guān)鍵字是“char”。4、布爾類型,是表示邏輯值的基本數(shù)據(jù)類型。

1、JDK代理和CGLIB代理

利用CGLIB實(shí)現(xiàn)動(dòng)態(tài)代理,CGLIB底層采用ASM的字節(jié)碼生成框架,用字節(jié)碼技術(shù)生成代理類,比使用JDK1.6之前的Java反射更有效。惟一要注意的是,CGLIB不能代理聲明為final的類或方法,因?yàn)镃GLIB原理是被代理類動(dòng)態(tài)生成的子類。

逐步優(yōu)化JDK動(dòng)態(tài)代理:JDK1.6、JDK1.7、JDK1.8后,當(dāng)調(diào)用次數(shù)較少時(shí),JDK代理的效率會(huì)比CGLIB代理高,只有在大量調(diào)用發(fā)生時(shí),JDK1.6、JDK1.7才會(huì)比JDK1.6、JDK1.7略低一些,但在JDK1.8時(shí),JDK代理的效率會(huì)略高一些。因此,如果有接口使用JDK動(dòng)態(tài)代理,如果沒有接口使用CGLIB代理。

2、動(dòng)態(tài)代理和靜態(tài)代理

與靜態(tài)代理相比,動(dòng)態(tài)代理最大的優(yōu)點(diǎn)在于,將接口中聲明的所有方法轉(zhuǎn)移到調(diào)用處理程序的一個(gè)集中方法中(InvocationHandler.invoke)。通過這種方式,當(dāng)接口方法的數(shù)量較多時(shí),我們可以進(jìn)行靈活處理,而不必像靜態(tài)代理那樣,對(duì)每個(gè)方法都進(jìn)行中轉(zhuǎn)。

當(dāng)接口增加一個(gè)方法時(shí),除了所有實(shí)現(xiàn)類都需要實(shí)現(xiàn)該方法之外,靜態(tài)代理模式還需要實(shí)現(xiàn)所有代理類都需要實(shí)現(xiàn)該方法,從而增加了代碼維護(hù)的責(zé)任,而動(dòng)態(tài)代理則沒有這個(gè)問題。

以上是“java中不同代理的區(qū)別有哪些”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI