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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 涂金哲 中级黑马   /  2012-7-31 15:25  /  2398 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

JavaBean是一种组件,可被复用。如果T为类型 N为属性名称
Public T getN()
Public void setNT arg
这是javaBean的书写格式。在javaBeanAPI中提供了一些类和方法  如:PropertyDescription类的实例可以描述Bean的属性。假设我们知道了某个javaBean的成员属性的名称,运用反射机制那么我们就可以通过该类提供的getReadMethod()方法读取到这个属性名称对应的值,还可以通过getWriteMethod()方法修改该属性的值。JavaBean中的成员属性一般都是私有的。也是一种封装,而它对外提供的这些方法却能访和修改,这样对javaBean的封装是一种破坏吗?

评分

参与人数 1技术分 +1 收起 理由
田向向 + 1 也许你这是我12期的最后一分了,呵呵,去13.

查看全部评分

3 个回复

倒序浏览
本帖最后由 陈红建 于 2012-7-31 16:22 编辑
  1. javaBean只是书写规范 但是有了javaBean就可以灵活的运用反射来修改某些java类
  2. 对于封装性来说 可以用 final来 保证 类的封装性。即使你在封装 他也还是要对外提供访问的
  3. 即使你的 成员变量是私有的 也可以用反射来修改的
  4. //标准的javabean编写规范
  5. public class Person //javabean类必须是共有的
  6. {
  7.         private String name;//成员必须是私有的
  8.         private int     age;
  9.         public Person(){}//必须有一个公共的无参数的构造函数

  10.         //具有get 和set方法
  11.         public int getAge()
  12.         {
  13.                 return age;
  14.         }
  15.         public String getName()
  16.         {
  17.                 return name;
  18.         }
  19.         public void setAge(int age)
  20.         {
  21.                  this.age=age;
  22.         }
  23.         public void setName(String name)
  24.         {
  25.                  this.name=name;
  26.         }

  27. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
田向向 + 1 希望你能继续在13期加油

查看全部评分

回复 使用道具 举报
这个问题很多人都思考过,很多人感觉这是个矛盾
以下是我自己的总结
首先要想我们为什么封装
是为了程序的安全、健壮性、方便等
一是某些功能我们没必要暴露出去
就拿电脑主机来举例子
你想想要是电脑上直接暴露出来cpu有必要吗
没这个必要,因为我们不需要知道这个cpu我们照样能用
cpu就相当于私有的属性或者方法
不暴露出来一是没必要
二是有可能出现安全问题
但是不暴露出来不代表我们就不能访问了
假如cpu坏了,我们一样可以给他换一块
封装就相当于是为了使用起来方便和安全
反射就相当于是为了维修起来方便和灵活
封装就相当于主机上的螺丝钉
反射就相当于一把螺丝刀
用螺丝刀可以搞维修也可以搞破坏
但是不能因为螺丝刀具有破坏性就不用他了吧
纯属自己理解,有什么不当之处欢迎多多指教。
希望对你有所帮助。
回复 使用道具 举报
侯宪博 发表于 2012-8-1 13:06
这个问题很多人都思考过,很多人感觉这是个矛盾
以下是我自己的总结
首先要想我们为什么封装

非常感谢!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马