黑马程序员技术交流社区
标题: javaBean的一个疑问 [打印本页]
作者: 涂金哲 时间: 2012-7-31 15:25
标题: javaBean的一个疑问
JavaBean是一种组件,可被复用。如果T为类型 N为属性名称
Public T getN()
Public void setN(T arg)
这是javaBean的书写格式。在javaBean的API中提供了一些类和方法 如:PropertyDescription类的实例可以描述Bean的属性。假设我们知道了某个javaBean的成员属性的名称,运用反射机制那么我们就可以通过该类提供的getReadMethod()方法读取到这个属性名称对应的值,还可以通过getWriteMethod()方法修改该属性的值。JavaBean中的成员属性一般都是私有的。也是一种封装,而它对外提供的这些方法却能访和修改,这样对javaBean的封装是一种破坏吗?
作者: 陈红建 时间: 2012-7-31 16:03
本帖最后由 陈红建 于 2012-7-31 16:22 编辑
- javaBean只是书写规范 但是有了javaBean就可以灵活的运用反射来修改某些java类
- 对于封装性来说 可以用 final来 保证 类的封装性。即使你在封装 他也还是要对外提供访问的
- 即使你的 成员变量是私有的 也可以用反射来修改的
- //标准的javabean编写规范
- public class Person //javabean类必须是共有的
- {
- private String name;//成员必须是私有的
- private int age;
- public Person(){}//必须有一个公共的无参数的构造函数
- //具有get 和set方法
- public int getAge()
- {
- return age;
- }
- public String getName()
- {
- return name;
- }
- public void setAge(int age)
- {
- this.age=age;
- }
- public void setName(String name)
- {
- this.name=name;
- }
- }
复制代码
作者: 侯宪博 时间: 2012-8-1 13:06
这个问题很多人都思考过,很多人感觉这是个矛盾
以下是我自己的总结
首先要想我们为什么封装
是为了程序的安全、健壮性、方便等
一是某些功能我们没必要暴露出去
就拿电脑主机来举例子
你想想要是电脑上直接暴露出来cpu有必要吗
没这个必要,因为我们不需要知道这个cpu我们照样能用
cpu就相当于私有的属性或者方法
不暴露出来一是没必要
二是有可能出现安全问题
但是不暴露出来不代表我们就不能访问了
假如cpu坏了,我们一样可以给他换一块
封装就相当于是为了使用起来方便和安全
反射就相当于是为了维修起来方便和灵活
封装就相当于主机上的螺丝钉
反射就相当于一把螺丝刀
用螺丝刀可以搞维修也可以搞破坏
但是不能因为螺丝刀具有破坏性就不用他了吧
纯属自己理解,有什么不当之处欢迎多多指教。
希望对你有所帮助。
作者: 涂金哲 时间: 2012-8-2 09:31
侯宪博 发表于 2012-8-1 13:06
这个问题很多人都思考过,很多人感觉这是个矛盾
以下是我自己的总结
首先要想我们为什么封装
非常感谢!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |