黑马程序员技术交流社区

标题: java反射 [打印本页]

作者: 曾辉    时间: 2012-1-12 13:10
标题: java反射
java反射机制可以调用到私有方法,是不是就破坏了JAVA的卦装性呢?
作者: 李娟    时间: 2012-1-12 13:19
破坏了,所以叫暴力反射嘛{:soso__18189912397495833554_1:}
作者: 为梦而战    时间: 2012-1-12 13:19
本帖最后由 为梦而战 于 2012-1-12 13:21 编辑

按理说是啊,但是看你看重什么了,本来私有的方法是不让你直接用的,你要用,那肯定是考虑到用它能达到你的目的,这时就的牺牲一下封装了,
这就好像有一个门,它锁着不让进,可是你确实需要进去拿东西,那就给你把钥匙,你可以开门了。相对于其它没有这把锁的钥匙的人,这个门里的东西还是封装的了。
作者: 王_涛    时间: 2012-1-13 19:43
这是一个很值得探讨的问题,许多人接触反射时,对反射功能之强大都会抱有怀疑,感觉严重破坏了封装的性质。可是,什么是封装,什么是安全呢?
封装,是将具体的实现细节隐藏,而把功能作为整体提供给类的外部使用,也就是说,公有方法能够完成类所具有的功能。当别人使用这个类时,如果通过反射直接调用私有方法,可能根本实现不了类的功能,甚至可能会出错,因此通过反射调用私有方法可以说是没有任何用处的,开发人员没有必要故意去破坏封装好的类。从这点上看,封装性并没有被破坏。
所谓安全,如果意思是保护实现源码不被别人看见,那没有作用。不用反射也能轻易获取源码。
所以我以为反射机制只是提供了一种强大的功能,使得开发者能在封装之外,按照特定的需要实现一些功能。就好比核技术,虽然造核弹很危险吧,但造核电站还是很有用处的(这个比喻似乎不是很恰当,将就将就)。

曾经给朋友讨论过这个问题,感觉解释得不是很清楚,大家一起探讨探讨,看看怎样表述才能更容易理解:)





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2