如果您可以使用反射改变私有属性,有什么用?

Lie*_*oen 4 reflection

我知道这听起来像一个愚蠢的问题,但如果您可以访问私有属性并更改它们,您的API有多安全?

Ric*_*dOD 10

当人们可以将门打开时,锁上门有什么意义?使用反射需要更多技能和更多努力.在大多数情况下,代码很好.无论如何,反射在非完全信任环境中不能很好地工作.


eld*_*rge 6

在不支持反射的语言中,总是有可能通过直接内存访问来绕过API.

封装不是为了保护您的API免受滥用,而是隐藏可能发生变化的代码部分.如果客户端代码使用官方界面 - 在这样的更改后它将继续工作.如果没有,那么这个代码的作者就是他的脚.