黑马程序员技术交流社区

标题: 关于java反射的问题 [打印本页]

作者: 黄新灵    时间: 2011-10-6 22:59
标题: 关于java反射的问题
我们都知道java面向对象,健壮性,封装性,因此类对象有着自己的属性和方法,但是通过反射机制可以获得一个类的属性和方法,就连private修饰的也可以获得,这样是不是破坏了健壮性,封装性???
作者: 张校云    时间: 2011-10-6 23:13
本帖最后由 张校云 于 2011-10-6 23:19 编辑

封装是为了提供安全性,反射增强了java的功能,并不会威胁安全性。
作者: 宁超    时间: 2011-10-6 23:32
封装,是将具体的实现细节隐藏,而把功能作为整体提供给类的外部使用,也就是说,公有方法能够完成类所具有的功能。当别人使用这个类时,如果通过反射直接调用私有方法,可能根本实现不了类的功能,甚至可能会出错,因此通过反射调用私有方法可以说是没有任何用处的,开发人员没有必要故意去破坏封装好的类。从这点上看,封装性并没有被破坏。
我认为反射机制只是提供了一种强大的功能,使得开发者能在封装之外,按照特定的需要实现一些功能。但是当对象封装不合理的的时候,迫不得已还是要用的,这样才会使程序更加完美。
存在即合理吧。
作者: 王家虎    时间: 2011-10-7 00:03
反射并没有破坏类的封装性。”类是私有成员不能被外界直接访问“这句话是正确的,但反射中所说只是得到类的私有成员并没有说是访问类的私有成员。反射只是得到了私有成员并且这个得到的是私有成员的对象。




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