了解Java反射的缺点

时间:2014-03-02 20:13:41

标签: java reflection

我试图理解Java docs

中提到的缺点

安全限制

  

Reflection需要一个运行时权限,当时可能不存在   在安全经理下运行。

反射需要什么样的运行时权限?在这种情况下,什么是安全管理器?这个缺点是否仅适用于Applet?

内部曝光

  

由于反射允许代码执行可能的操作   在非反射代码中非法,例如访问私有字段和   方法,使用反射可能会导致意想不到的副作用,   这可能会导致代码功能失常并可能破坏可移植性。   反射代码打破了抽象,因此可能会改变行为   升级平台。

反射如何打破抽象?以及它如何影响升级平台。

请帮我澄清这些。非常感谢。

3 个答案:

答案 0 :(得分:0)

安全“沙箱”不仅限于小程序。许多其他环境允许不太完全信任的“插件”代码 - 网络服务器,IDE等 - 限制插件可以做些什么来保护自己免受插件中的错误(不是故意提及恶意代码)。

答案 1 :(得分:0)

首先,你应该总是问问自己为什么在你的代码中反思。你是不是能够在没有反思的情况下进行操作。如果是,那么只有你应该使用反射。 Reflection使用有关类,变量和方法的元信息,这会增加开销,性能问题和安全威胁。

要详细了解反思的缺点,请访问http://modernpathshala.com/Forum/Thread/Interview/310/what-are-the-drawbacks-of-reflection

答案 2 :(得分:0)

一个叫做依赖容器的框架类被用来分析一个类的依赖。通过此分析,它能够创建该类的实例,并通过 Java Reflections 将对象注入定义的依赖项中。这消除了硬依赖性。这样,该类可以单独进行测试,例如。通过使用模拟对象。这是匕首1。

此过程的主要缺点有两个方面。首先,反射是放慢自己的速度,其次,它是用来在运行时上执行依赖关系解析的,从而导致意外崩溃