黑马程序员——JavaBean

------- android培训java培训、期待与您交流! ----------

总是感觉这部分有点云里雾里,现在重新整理笔记。

PropertyDescriptor第一眼并没有记住它,强行记忆!

package cn.heima;

import java.beans.PropertyDescriptor;
import java.lang.reflect.Method;

public class IntrospectorTest {
	public static void main(String[] args) throws Exception{
		ReflectPoint rp1 = new ReflectPoint(3,5);
		String propertyName = "x";
		//PropertyDescriptor 描述 Java Bean 通过一对存储器方法导出的一个属性。
		PropertyDescriptor pd = new PropertyDescriptor(propertyName, rp1.getClass());
		Method getX = pd.getReadMethod();
		//  获得应该用于读取属性值的方法。
		Object retVal = getX.invoke(rp1);
		System.out.println(retVal);
		Method setX = pd.getWriteMethod();
		//获得应该用于写入属性值的方法。
		setX.invoke(rp1, 9);
		System.out.println(rp1.getX());
	}
}


 

		//采用遍历BeanInfo的所有属性方式来查找和设置某个ReflectPoint对象的
		//x属性。在程序中把一个类当做JavaBean来看,就是调用Introspector.getBeanInfo()
		//得到的BeanInfo对象封装了把这个类当做JavaBean看到的结果信息。
		BeanInfo bi = Introspector.getBeanInfo(rp1.getClass());
		PropertyDescriptor[] pds =bi.getPropertyDescriptors();
		for(PropertyDescriptor pd1:pds){
			if(pd1.getName().equals(propertyName))
			{
				System.out.println(pd1.toString());
				System.out.println(pd1.getPropertyType());
				Method getX1 = pd1.getReadMethod();
				System.out.println("--"+getX1.invoke(rp1));
				break;
			}
		}


 

		System.out.println(BeanUtils.getProperty(rp1, "x").getClass().getName());
		//BeanUtils操作参数需要的是字符串
		BeanUtils.setProperty(rp1, "x", "110");
		System.out.println(BeanUtils.getProperty(rp1, "x"));
		
		//PropertyUtils操作的参数,是原定义的类型
		System.out.println(PropertyUtils.getProperty(rp1, "x").getClass().getName());
		PropertyUtils.setProperty(rp1, "x", 119);
		System.out.println(PropertyUtils.getProperty(rp1, "x"));
		/*java.lang.String
		110
		java.lang.Integer
		119*/

 

	//Date有个方法setTime 也是符合JavaBean的规则
		//birthdat.time支持级联操作
		BeanUtils.setProperty(rp1, "birthday.time", "120");
		System.out.println(BeanUtils.getProperty(rp1, "birthday.time"));



 

------- android培训java培训、期待与您交流! ----------  详细请查看:http://edu.csdn.net/heima/
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章