最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

淺析Java 反射機(jī)制的用途和缺點(diǎn)

 更新時(shí)間:2018年07月22日 15:16:35   作者:Alfredonwr  
這篇文章給大家分析了Java 反射機(jī)制的用途和缺點(diǎn)以及相關(guān)知識(shí)點(diǎn)內(nèi)容,有興趣的朋友可以參考學(xué)習(xí)下。

反射的用途 Uses of Reflection

Reflection is commonly used by programs which require the ability to examine or modify the
runtime behavior of applications running in the Java virtual machine. This is a relatively advanced
feature and should be used only by developers who have a strong grasp of the fundamentals of the language. With that caveat in mind, reflection is a powerful technique and can enable applications to perform operations which would otherwise be impossible.
反射被廣泛地用于那些需要在運(yùn)行時(shí)檢測(cè)或修改程序行為的程序中。這是一個(gè)相對(duì)高級(jí)
的特性,只有那些語(yǔ)言基礎(chǔ)非常扎實(shí)的開(kāi)發(fā)者才應(yīng)該使用它。如果能把這句警示時(shí)刻放在心
里,那么反射機(jī)制就會(huì)成為一項(xiàng)強(qiáng)大的技術(shù),可以讓?xiě)?yīng)用程序做一些幾乎不可能做到的事情。

反射的缺點(diǎn) Drawbacks of Reflection

Reflection is powerful, but should not be used indiscriminately. If it is possible to perform an
operation without using reflection, then it is preferable to avoid using it. The following concerns
should be kept in mind when accessing code via reflection.
盡管反射非常強(qiáng)大,但也不能濫用。如果一個(gè)功能可以不用反射完成,那么最好就不用。
在我們使用反射技術(shù)時(shí),下面幾條內(nèi)容應(yīng)該牢記于心:

性能第一 Performance Overhead

Because reflection involves types that are dynamically resolved, certain Java virtual machine
optimizations can not be performed. Consequently, reflective operations have slower performance
than their non-reflective counterparts, and should be avoided in sections of code which are called
frequently in performance-sensitive applications.
反射包括了一些動(dòng)態(tài)類型,所以 JVM 無(wú)法對(duì)這些代碼進(jìn)行優(yōu)化。因此,反射操作的效
率要比那些非反射操作低得多。我們應(yīng)該避免在經(jīng)常被 執(zhí)行的代碼或?qū)π阅芤蠛芨叩某?
序中使用反射。

安全限制 Security Restrictions

Reflection requires a runtime permission which may not be present when running under a
security manager. This is in an important consideration for code which has to run in a restricted
security context, such as in an Applet.
使用反射技術(shù)要求程序必須在一個(gè)沒(méi)有安全限制的環(huán)境中運(yùn)行。如果一個(gè)程序必須在有
安全限制的環(huán)境中運(yùn)行,如 Applet,那么這就是個(gè)問(wèn)題了。

內(nèi)部暴露 Exposure of Internals

Since reflection allows code to perform operations that would be illegal in non-reflective
code, such as accessing private fields and methods, the use of reflection can result in
unexpected side-effects, which may render code dysfunctional and may destroy portability.
Reflective code breaks abstractions and therefore may change behavior with upgrades of the
platform.
由于反射允許代碼執(zhí)行一些在正常情況下不被允許的操作(比如訪問(wèn)私有的屬性和方
法),所以使用反射可能會(huì)導(dǎo)致意料之外的副作用--代碼有功能上的錯(cuò)誤,降低可移植性。
反射代碼破壞了抽象性,因此當(dāng)平臺(tái)發(fā)生改變的時(shí)候,代碼的行為就有可能也隨著變化。

相關(guān)文章

最新評(píng)論

大同市| 环江| 富锦市| 海宁市| 得荣县| 宁国市| 宜君县| 蒙城县| 伽师县| 富川| 阿巴嘎旗| 武功县| 徐汇区| 溧阳市| 清苑县| 门源| 康马县| 奎屯市| 丹巴县| 沅陵县| 景德镇市| 池州市| 鄯善县| 庆云县| 中西区| 睢宁县| 两当县| 潜山县| 时尚| 区。| 福建省| 东莞市| 理塘县| 沁阳市| 大姚县| 叶城县| 兴隆县| 左云县| 满城县| 乌拉特后旗| 开平市|