了解Java反射的缺点

了解Java反射的缺点,java,reflection,Java,Reflection,我正在努力理解中提到的缺点 安全限制 反射需要运行时权限,但在 在安全管理器下运行 反射需要哪些运行时权限?在这种情况下,什么是安全管理器?这一缺陷仅适用于小程序吗 内部构件的暴露 因为反射允许代码执行 在非反射代码中是非法的,例如访问私有字段和 方法,使用反射可能会导致意外的副作用, 这可能导致代码功能失调,并可能破坏可移植性。 反射代码打破了抽象,因此可能会改变行为 随着平台的升级 反思如何打破抽象?以及它对平台升级的影响 请帮我澄清这些。非常感谢。安全“沙盒”不限于小程序。许多其他允许不完

我正在努力理解中提到的缺点

安全限制

反射需要运行时权限,但在 在安全管理器下运行

反射需要哪些运行时权限?在这种情况下,什么是安全管理器?这一缺陷仅适用于小程序吗

内部构件的暴露

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

反思如何打破抽象?以及它对平台升级的影响


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

安全“沙盒”不限于小程序。许多其他允许不完全受信任的“插件”代码的环境(Web服务器、IDE等)限制了插件保护自己免受插件错误(更不用说蓄意恶意代码)的影响

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


要详细了解反射的缺点,请访问一个名为dependency container的框架类来分析类的依赖关系。通过这种分析,它能够创建类的实例,并通过Java反射将对象注入到定义的依赖项中。这消除了硬依赖性。这样就可以单独测试该类,例如使用模拟对象。这是匕首1


这个过程的主要缺点是两个方面。首先,反射是减慢自身速度,其次,它用于在运行时执行依赖项解析,导致意外崩溃

例如,使用反射,您可以使
私有
字段/方法变为
公共
。但是,不知道
SecurityManager
会如何影响……复制?(网络搜索“java反射安全性”发现,首先,还有很多其他的讨论。)@keshlam虽然这解释了反射的风险,但是
SecurityManager
可以做些什么来防止一些/大部分风险并不是很清楚mentioned@keshlam,谢谢你提供链接。请你澄清我的第二个问题,这个问题与内部内容的暴露有关。请不要在回答中使用缩短的URL。他们没有告诉我关于我将要访问的网站的任何信息。