内省(javaBean)


内省----javaBean

                   利用javaBean来获得某个sioux变量的值

                   ReflectPointpt1 = new ReflectPoint(3,4);

                   StringpropertyName = "x";

                   得到属性描述对象(属性名,javaBean类);javaBean类用字节码对象表示

                   PropertyDescriptorpd = new PropertyDescriptor(propertyName,pt1.getClass());

                   MethodmethodGetX = pd.getReadMethod();//得到get方法

                   ObjectretVal = methodGetX.invoke(pt1);

                  

                   MethodmethodSetX = pd.getWriteMethod();//得到set方法

                   methodSetXinvoke(pt1,5);

                  

           第二种方法获得javaBean中的信息

                            根据对象获取该对象的javaBean信息

                            BeanInfobeanInfo = Introspector.getBeanInfo(pt1.getClass());

                            根据Bean信息对象获取属性集合

                            PropertyDescriptor[]pds = beanInfo.getPropertyDescriptor();

                            Objectretval = null;

                            for(PropertyDescriptorpd:pds){

                                     if(pd.getName().equals(propertyName)){//找到属性

                                               MethodmethodGetX = pd.getReadMethod()

                                               retval = methodGetX.invoke(pt1);

                                               break;

                                     }

                            }

      Beanutils工具包

                   得到bean对象中,属性为name的值

                   BeanUtils.getProperty(bean,name);

                   bean对象的name属性设置value

                   BeanUtils.setProperty(bean,name, value);

                  

                   例如

                   classTest(){

                            privateDate d = new Date()//必须new

                            publicDate getDate(){

                                     retrund;

                            }

                            publicvoid setDate(Date d){

                                     this.d  = d;

                            }

                   }

                   由于d是一个复合属性。

                  

                   BeanUtils.setProperty(newTest(), "d.time", "111");

                   BeanUtils是以字符串对javaBean操作

                   PropertyUtils是以对应类型对javaBean操作

                   PropertyUtils.setProperty(pt1,"x", 4);

                   PropertyUtils.getProperty(pt1,"x").getClass().getName();java.lang.Integer

                   BeanUtils.getProperty(pt1,"x").getClass().getName();java.lang.String

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值