黑马程序员技术交流社区

标题: Java的反射与Java的刲装是否有矛盾? [打印本页]

作者: 罗安迪    时间: 2014-3-1 19:16
标题: Java的反射与Java的刲装是否有矛盾?
本帖最后由 罗安迪 于 2014-3-3 09:25 编辑


一直想不通 通过Java的反射可以获取private的属性 内容 并且可以更改,那么原来说的通过把状态加上private来避免被外界访问而提高程序的健壮性,这两个特性是不是矛盾了呢?

能理解这两特性的好处,但是这是不是一个得益得害的结果?



作者: 年少丶    时间: 2014-3-1 20:12
封装,是将具体的实现细节隐藏,而把功能作为整体提供给类的外部使用,也就是说,公有方法能够完成类所具有的功能。当别人使用这个类时,如果通过反射直接调用私有方法,可能根本实现不了类的功能,甚至可能会出错,因此通过反射调用私有方法可以说是没有任何用处的,开发人员没有必要故意去破坏封装好的类。从这点上看,封装性并没有被破坏。
所谓安全,如果意思是保护实现源码不被别人看见,那没有作用。不用反射也能轻易获取源码。
所以我以为反射机制只是提供了一种强大的功能,使得开发者能在封装之外,按照特定的需要实现一些功能。就好比核技术,虽然造核弹很危险吧,但造核电站还是很有用处的(这个比喻似乎不是很恰当,将就将就)。
作者: 向阳泪无痕    时间: 2014-3-2 00:28
任何事物都有对立的一面吧!如果某个事物一但无法改变,那么这不就死了么。所以万事都是相通的。只是须要一定的级别。
作者: q527198615    时间: 2014-3-2 20:42
我记得在那个老师的视频上讲了这个问题,没有绝对!
作者: 罗安迪    时间: 2014-3-3 09:22
年少丶 发表于 2014-3-1 20:12
封装,是将具体的实现细节隐藏,而把功能作为整体提供给类的外部使用,也就是说,公有方法能够完成类所具有 ...

。。。好吧 谢谢




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