黑马程序员-JavaBean

------- android培训java培训、期待与您交流! ----------
内省:IntroSpector-->JavaBean-->特殊的java类
如果一个java类中的一些方法符合某种命名规则,可以把它当做JavaBean来使用。
如果把某个类视为javaBean,这个类的属性时根据它的get和set方法来确定的。比如setAge和getAge
那么这个javaBean就有一个age属性。
JavaBean中必须带有一个空参数的构造函数。

getProperties和setProperties方法:
private static Object getProperties(Object obj,String propertyName)throws Exception
	{
		PropertyDescriptor pd = new PropertyDescriptor(propertyName,obj.getClass());
		Method methodGetX = pd.getReadMethod();//获得用于读取属性值的方法
		Object retVal = methodGetX.invoke(obj);//调用获得的底层读取方法得到属性值
		return retVal;
}
private static void setProperties(Object obj,String propertyName,Object value)throws Exception
	{
		PropertyDescriptor obj = new PropertyDescriptor(propertyName,obj.getClass());
		Method methodSetX = obj.getWriteMethod();//获得用于写入属性值的方法
		methodSetX.invoke(obj,value);//调用获得的底层写入方法设置新的属性
}



比较复杂的getProperties方法:
private static Object getProperties(Object obj,String PropertyName)throws Exception
	{
		BeanInfo beanInfo = IntroSpector.getBeanInfo(obj.getClass());
		//在javabean上进行内省,了解该对象的所有属性,公开的方法和事件
		PropertyDescriptor[] pds = beanInfo.getPropertyDescriptors();
		//获得该对象所有属性
		Object retVal = null;
		for(PropertyDescriptor pd : pds)//对所有属性进行遍历
		{
			if(pd.getName().equals(propertyName))//找到与指定属性相同的属性
			{
				Method methodGetX = pd.getReadMethod();//生成对应的方法类
				retVal = methodGetX.invoke(obj);//调用该底层方法
			}
		}
		return retVal;
	}



BeanUtils和commonslogging工具包:
BeanUtils.setProperty(bean,name,value);//value 必须是String类型,getProperty返回值也是String
BeanUtils.getProperty(bean,name);//value是String 类型。name可以设置成层级模式,比如:birthday.time,但上级的必须实例对象。
PropertyUtils.setProperty(bean,name,value);//value是Object类,返回值也是Object
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值