apache.commons.beanutils.BeanUtils
該class提供了一系列的靜態(tài)方法操作已存在的符合JavaBean規(guī)范定義的Java Class.這里強調(diào)的JavaBean規(guī)范,簡單來說就是一個Java Class通過一系列g(shù)etter和setter的方法向外界展示其內(nèi)在的成員變量(屬性)。
通過BeanUtils的靜態(tài)方法,我們可以:
復(fù)制一個JavaBean的實例--BeanUtils.cloneBean();
在一個JavaBean的兩個實例之間復(fù)制屬性--BeanUtils.copyProperties(),BeanUtils.copyProperty();
為一個JavaBean的實例設(shè)置成員變量(屬性)值--BeanUtils.populate(),BeanUtils.setProperty();
從一個JavaBean的實例中讀取成員變量(屬性)的值--BeanUtils.getArrayProperty(),BeanUtils.getIndexedProperty(),BeanUtils.getMappedProperty(),BeanUtils.getNestedProperty(),BeanUtils.getSimpleProperty(),BeanUtils.getProperty(),BeanUtils.describe();
1、BeanUtils.cloneBean(java.lang.object bean)
為bean創(chuàng)建一個clone對象,方法返回類型為Object.此方法的實現(xiàn)機制建立在bean提供的一系列的getters和setters的基礎(chǔ)之上.此方法的正常使用代碼非常簡單,故略掉.
2、BeanUtils.copyProperties(java.lang.Object dest, java.lang.Object orig)
一個bean class有兩個實例:orig和dest,將orig中的成員變量的值復(fù)制給dest,即將已經(jīng)存在的dest變?yōu)閛rig的副本.與BeanUtils.cloneBean(java.lang.object bean)的區(qū)別就在于是不是需要創(chuàng)建新的實例了.
原文如下:Copy property values from the origin bean to the destination bean for all cases where the property names are the same.
3、BeanUtils.setProperty(java.lang.Object bean,java.lang.String name,java.lang.Object value)
這個方法簡單的說就是將bean中的成員變量name賦值為value.
BeanUtils.populate(java.lang.Object bean, java.util.Map properties)
使用一個map為bean賦值,該map中的key的名稱與bean中的成員變量名稱相對應(yīng).注意:只有在key和成員變量名稱完全對應(yīng)的時候,populate機制才發(fā)生作用;但是在數(shù)量上沒有任何要求,如map中的key如果是成員變量名稱的子集,那么成員變量中有的而map中不包含的項將會保留默認(rèn)值;同樣,如果成員變量是map中key的子集,那么多余的key不會對populate的結(jié)果產(chǎn)生任何影響.恩,結(jié)果就是populate只針對map中key名稱集合與bean中成員變量名稱集合的交集產(chǎn)生作用。
4、BeanUtils.getArrayProperty(java.lang.Object bean,java.lang.String name)
獲取bean中數(shù)組成員變量(屬性)的值.
如果我們指定的name不是數(shù)組類型的成員變量,結(jié)果會如何?會不會拋出類型錯誤的exception呢?回答是不會,仍然會返回一個String的數(shù)組,數(shù)組的第一項就是name對應(yīng)的值(如果不
是String類型的話,JVM會自動的調(diào)用toString()方法的).
BeanUtils.getIndexedProperty(java.lang.Object bean,java.lang.String name)
BeanUtils.getIndexedProperty(java.lang.Object bean,java.lang.String name,int index)
這兩個方法都是獲取數(shù)組成員變量(屬性)中的單一元素值的方法.
比如,我想得到SampleObject中words[1]的值,用法如下:
BeanUtils.getIndexedProperty(sampleOjbectInstance,"words[1]");
BeanUtils.getIndexedProperty(sampleOjbectInstance,"words",1);
BeanUtils.getMappedProperty(java.lang.Object bean,java.lang.String name)
BeanUtils.getMappedProperty(java.lang.Object bean,java.lang.String name,java.lang.String key)
BeanUtils.describe(java.lang.Object bean)
將一個bean以map的形式展示。
來源:http://www.chinaitpower.com/A/2005-07-03/150232.html