內省
JavaBean是一個特殊的java類,jdk提供的對javabean的操作的API就是內省.對javabean的操作無外乎對屬性的get和set,而這其實就是調用JavaBean的對應的set和get方法的過程,因此把javaBean當做普通類來處理勢必很麻煩,因爲我們很難準確的定義各屬性所對應的set和get方法名,顯然內省提供瞭解決此問題的方法
PropertyDescriptor描述Java Bean 通過一對存儲器方法導出的一個屬性.它的三個構造方法
String
propertyName,
PropertyDescriptor
(
Class
<?> beanClass,
String
writeMethodName)
String
propertyName,
Method
writeMethod)
顯然在我們不能很容易的確定一個JavaBean的屬性的時候,我們更應該使用第一個構造方法
String
propertyName,
Class
<?> beanClass)
我們只要傳遞操作的JavaBean類的Class對象和屬性的名字這兩個變量就可以了,而不必考慮這個屬性的get和set方法是什麼樣的.
當獲得PropertyDescriptor的對象的時候我們可以調用對象的getReadMethd和getWriteMethod來獲取JavaBean屬性的一對存儲器方法對象,即get和set方法對象.接着就可以用反射的方法來調用這些方法.
BeanUtils是apa
BeanUtils.copyProperties(Object dest,Object orig)拷貝屬性
BeanUtils.describe(Object bean)將指定的bean轉換爲Map類型
BeanUtils.setProperty()與PropertyUtils.setProperty()的區別是,BeanUtils爲JavaBean屬性的值賦值類型是字符串,而PropertyUtils則是屬性的原本類型
BeanUtils還支持屬性的延伸,若BeanUtils操作的JavaBean對象bean的一個屬性date是一個類的對象,而這個類也可以當做一個JavaBean類看待,並且有屬性x,那麼我們可以在用BeanUtils操作bean時延伸到date的x屬性,如BeanUtils.getProperty(bean,date.x).
BeanUtils是一個功能強大的工具包,可以在以後的使用中查詢BeanUtils的api文檔來了解各個方法的詳細用法.
che提供的操作JavaBean的工具包,包含了多種對JavaBean操作的方法.如:
BeanUtils.setProperty(Object obj,String PropertyName,String PropertyValue)設置JavaBean的屬性值;
BeanUtils.getProperty(Object obj,String PropertyName)獲取JavaBean的屬性值;