【发布时间】:2014-04-03 16:15:08
【问题描述】:
我试图了解Java docs中提到的缺点
安全限制
反射需要运行时权限,当 在安全管理器下运行。
反射需要哪些运行时权限?在这种情况下,安全管理器是什么?这个缺点是否仅适用于 Applet?
内部结构暴露
由于反射允许代码执行本来可以 在非反射代码中是非法的,例如访问私有字段和 方法,使用反射会导致意想不到的副作用, 这可能会使代码功能失调并可能破坏可移植性。 反射代码破坏了抽象,因此可能会改变行为 随着平台的升级。
反射如何打破抽象?以及它对平台升级有何影响。
请帮助我澄清这些。非常感谢。
【问题讨论】:
-
使用反射,您可以使
private字段/方法变为public。但是,不知道SecurityManager会如何影响... -
stackoverflow.com/questions/3002904/… 的副本? (网络搜索“java 反射安全”首先发现了这一点,以及许多其他讨论。)
-
@keshlam 虽然这解释了反思的风险,但没有提到
SecurityManager可以采取哪些措施来防止部分/大部分风险 -
@keshlam,感谢您提供链接。能否请您澄清我的第二个与内部暴露相关的问题。
标签: java reflection