A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 曾辉 黑马帝   /  2012-1-12 13:10  /  2075 人查看  /  3 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

java反射机制可以调用到私有方法,是不是就破坏了JAVA的卦装性呢?

3 个回复

倒序浏览
破坏了,所以叫暴力反射嘛{:soso__18189912397495833554_1:}
回复 使用道具 举报
本帖最后由 为梦而战 于 2012-1-12 13:21 编辑

按理说是啊,但是看你看重什么了,本来私有的方法是不让你直接用的,你要用,那肯定是考虑到用它能达到你的目的,这时就的牺牲一下封装了,
这就好像有一个门,它锁着不让进,可是你确实需要进去拿东西,那就给你把钥匙,你可以开门了。相对于其它没有这把锁的钥匙的人,这个门里的东西还是封装的了。

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
这是一个很值得探讨的问题,许多人接触反射时,对反射功能之强大都会抱有怀疑,感觉严重破坏了封装的性质。可是,什么是封装,什么是安全呢?
封装,是将具体的实现细节隐藏,而把功能作为整体提供给类的外部使用,也就是说,公有方法能够完成类所具有的功能。当别人使用这个类时,如果通过反射直接调用私有方法,可能根本实现不了类的功能,甚至可能会出错,因此通过反射调用私有方法可以说是没有任何用处的,开发人员没有必要故意去破坏封装好的类。从这点上看,封装性并没有被破坏。
所谓安全,如果意思是保护实现源码不被别人看见,那没有作用。不用反射也能轻易获取源码。
所以我以为反射机制只是提供了一种强大的功能,使得开发者能在封装之外,按照特定的需要实现一些功能。就好比核技术,虽然造核弹很危险吧,但造核电站还是很有用处的(这个比喻似乎不是很恰当,将就将就)。

曾经给朋友讨论过这个问题,感觉解释得不是很清楚,大家一起探讨探讨,看看怎样表述才能更容易理解:)
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马