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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 小马过河 中级黑马   /  2013-12-4 00:05  /  1625 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

看了张老师的视频,有些糊涂。讲解javaBean的开始说这是一个特殊的类,类的属性是其去掉set和get后的名字。而成员变量是不可见的。

结果他举例直接都是调用成员方法x值。

感觉好矛盾好矛盾,越看越晕。有人能讲解下javaBean的应用场景么,以及它的操作流程?
不要求代码,有比较明晰的思路就行哈{:soso_e117:}

评分

参与人数 1技术分 +1 黑马币 +3 收起 理由
狼王 + 1 + 3 认真学,好好努力。。。

查看全部评分

1 个回复

倒序浏览

回帖奖励 +2

本帖最后由 quan23355 于 2013-12-4 08:58 编辑

在一个Reflectpoint类中,我们可以把它当作一个普通类来操作,比如该类对象调用getX方法可以得到该对象私有成员属性x的值。但我们仔细看一下该类,你会发现有一种规律,比如:setX(中文意思是设置X)、getX(中文意思是获取X值),没错,这种规律符合settergetter命名规范,这时我们就可以把这种类称为javaBean类,由这种规范推算出来的成员属性称之为javaBean属性,至于java类内部的成员属性是怎样的我们根本不用去管,也管不了,因为那些都是私有的成员变量。当一个类一旦成为javaBean类时,我们就可以用一些特殊的方式去操作它,比如内省。
使用简单内省操作javaBean类(认真看注释,相信你会看明白的)
  1. calss Reflectpoint{
  2.         private int x; //私有成员属性
  3.         private int y; //私有成员属性

  4. Reflectpoint(int x,int y){//带参构造函数
  5.         this.x=x;
  6.         this.y=y;
  7. }

  8. //setter,getter方法。
  9.         public void setX(int x){//设置x的值
  10.         this.x=x;
  11. }
  12. public int getX(){//获取x的值
  13.         return this.X
  14. }
  15. public void setY(int y){//设置y值
  16.         this. y= y
  17. }
  18. public int getY(){//获取y值
  19.         return this.Y;
  20. }
  21. }
复制代码


  1. public class IntroSpectorTest
  2. {
  3. public static void main(String[] args) throws Exception {
  4.                         ReflectPoint pt1 = new ReflectPoint(3,5);
  5.                         String propertyName = "x";//定义一个我们认为可能是javaBean的属性x(由公有方法可以得出),
  6.                         //"x"-->"X"-->"getX"-->MethodGetX-->
  7. PropertyDescriptor pd = new PropertyDescriptor(propertyName,pt1.getClass());//创建一个指定javaBean类ReflectPoint,指定属性(x)的javaBean属性对象。
  8.                         Method methodGetX = pd.getReadMethod();//获取属性对应的getX方法
  9. Object retVal =methodGetX.invoke(pt1); //执行该方法,用指定的对象去调用该方法,相当于pt1.getX(),               
  10. System.out.println(retVal);//创建pt1对象时传入的x值为3,因此打印3
  11. PropertyDescriptor pd2 = new PropertyDescriptor(propertyName,pt1.getClass());
  12.                         Method methodSetX = pd2.getWriteMethod(); //获取setX方法
  13.                         methodSetX.invoke(pt1,7); 执行setX方法,相当于pt1.setX(7);
  14.                       System.out.println(pt1.getX);//输出7,设置成功。
  15. }
复制代码



评分

参与人数 1技术分 +1 黑马币 +6 收起 理由
狼王 + 1 + 6 很给力!继续努力哈。。。

查看全部评分

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