黑馬程序員——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/
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章