黑马程序员-----内省(IntroSpector)、JavaBean

---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IOS开发</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流! ----------------------


一、简介

JavaBean是一中特殊的java类,主要用于传递数据信息,这种java类中的方法主要用于访问私有的字段,且方法名符合某种命名规则;

JDK中提供了对JavaBean进行操作的一些API,这套API就称为内省;

二、作用

JavaBean可以在两个模块之间传递多个信息,可以将这些信息封装到一个JavaBean中,这种JavaBean的实例对象通常称之为值对象。。

JavaBean中的信息都是私有属性的,这些私有的信息由类中的getter、setter方法来操作;

注意:一个类被当做JavaBean使用时,JavaBean的属性是根据公共的方法名推断出来的,它根本看不到java类内部的成员变量;

推断方式----->去掉getter、setter方法的get和set前缀;剩余部分就是属性名,如果剩余部分的第二个字母是小写的则把剩余部分的首字母改成小写的,否则不用改;

三、使用内省操作JavaBean的get和set方法

1、简单

public class Test1 {
public static void main(String[] args)throws Exception {
JavaBeanTest jbt = new JavaBeanTest();
String propertyName = "x";
Object value = 7;
PropertyDescriptor pd = new PropertyDescriptor(propertyName, jbt.getClass());
Method methodSetX = pd.getWriteMethod();
methodSetX.invoke(jbt,value);

Method methodGetX = pd.getReadMethod();
System.out.println(methodGetX.invoke(jbt));;
}
}

2、复杂

采用遍历BeanInfo的所有属性的方式来查找和设置某个JavaBean对象的属性,在程序中吧一个类当成JavaBean来看,就是调用Introspector.getBeanInfo

方法,得到BeanInfo对象封装了把这个类当作JavaBean看的结果信息;

BeanInfo beanInfo = Introspector.getBeanInfo(jbt.getClass());
PropertyDescriptor[] pds = beanInfo.getPropertyDescriptors();
Object retVal = null;
for(PropertyDescriptor pd:pds){
if(pd.getName().equals(propertyName)){
Method method = pd.getReadMethod();
retVal = method.invoke(jbt);
break;
}
}
return retVal;

四、Beanutils工具包(阿帕奇)

使用:先导入beanutils包和logging包

getProperty();

setProperty();

BeanUtils不仅能提供便捷的Bean操作,还具备很多其他的功能,例如用Describe将Bean类的属性值变成Map集合,例如Key:Age value:7
或者用populate功能,将Map的内容填充到Bean里面,等等。

 BeanUtils在操作的时候,实现了String类型的转换,以String类型对JavaBean进行操作。propertyUtils在操作的时候,以属性本身对JavaBean进行操作。具体使用那个,看实际需求。


---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IOS开发</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流! ----------------------


详细请查看:<a href="http://edu.csdn.net" target="blank">http://edu.csdn.net</a>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值