更新時(shí)間:2019-08-15 11:23:33 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽3252次
Java反射機(jī)制的用途和缺點(diǎn)
反射的用途 Uses of Reflection
反射被廣泛地用于那些需要在運(yùn)行時(shí)檢測(cè)或修改程序行為的程序中。這是一個(gè)相對(duì)高級(jí)的特性,只有那些語(yǔ)言基礎(chǔ)非常扎實(shí)的開(kāi)發(fā)者才應(yīng)該使用它。如果能把這句警示時(shí)刻放在心里,那么反射機(jī)制就會(huì)成為一項(xiàng)強(qiáng)大的技術(shù),可以讓應(yīng)用程序做一些幾乎不可能做到的事情。
反射的缺點(diǎn) Drawbacks of Reflection
盡管反射非常強(qiáng)大,但也不能濫用。如果一個(gè)功能可以不用反射完成,那么最好就不用。在我們使用反射技術(shù)時(shí),下面幾條內(nèi)容應(yīng)該牢記于心:
1.性能第一 Performance Overhead
反射包括了一些動(dòng)態(tài)類型,所以 JVM 無(wú)法對(duì)這些代碼進(jìn)行優(yōu)化。因此,反射操作的效率要比那些非反射操作低得多。我們應(yīng)該避免在經(jīng)常被 執(zhí)行的代碼或?qū)π阅芤蠛芨叩某绦蛑惺褂梅瓷洹?/p>
2.安全限制 Security Restrictions
使用反射技術(shù)要求程序必須在一個(gè)沒(méi)有安全限制的環(huán)境中運(yùn)行。如果一個(gè)程序必須在有安全限制的環(huán)境中運(yùn)行,如 Applet,那么這就是個(gè)問(wèn)題了。
3.內(nèi)部暴露 Exposure of Internals
由于反射允許代碼執(zhí)行一些在正常情況下不被允許的操作(比如訪問(wèn)私有的屬性和方法),所以使用反射可能會(huì)導(dǎo)致意料之外的副作用--代碼有功能上的錯(cuò)誤,降低可移植性。反射代碼破壞了抽象性,因此當(dāng)平臺(tái)發(fā)生改變的時(shí)候,代碼的行為就有可能也隨著變化。
相關(guān)閱讀
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)
初級(jí) 202925
初級(jí) 203221
初級(jí) 202629
初級(jí) 203743