JAVA 通過反射機(jī)制給Bean對(duì)象賦值

public classReflectGetValueUtils {

/**

* 取出bean 屬性和值

*

*@paramobj

*@return

*@throwsException

*/

public staticMap getFileValue(Object obj) {

Map map =newHashMap();

try{

Class cls = obj.getClass();

Method methods[] = cls.getDeclaredMethods();

Field fields[] = cls.getDeclaredFields();

for(Field field : fields) {

String fldtype = field.getType().getSimpleName();

String getMetName =pareGetName(field.getName());

String result ="";

if(!checkMethod(methods, getMetName)) {

continue;

}

Method method = cls.getMethod(getMetName,newClass[] { field.getType() });

Object object =null;

object = method.invoke(obj,newObject[]{});

if(null!= object) {

if(fldtype.equals("Date")) {

result =fmlDate((Date) object);

}

result = String.valueOf(object);

}

map.put(field.getName(), result);

}

}catch(Exception e) {

e.printStackTrace();

}

returnmap;

}

/**

* 設(shè)置bean 屬性值

*

*@parammap

*@parambean

*@throwsException

*/

public static voidsetFieldValue(Map map, Object bean)? {

try{

Class cls = bean.getClass();

Method methods[] = cls.getDeclaredMethods();

Field fields[] = cls.getDeclaredFields();

for(Field field : fields) {

String fldtype = field.getType().getSimpleName();

String fldSetName = field.getName();

String setMethod =pareSetName(fldSetName);

if(!checkMethod(methods, setMethod)) {

continue;

}

Object value = map.get(fldSetName);

//? ? ? ? ? ? ? ? System.out.println(value.toString());

Method method = cls.getMethod(setMethod, field.getType());

//? ? ? ? ? ? ? ? System.out.println(method.getName());

if(null!= value) {

if("String".equals(fldtype)) {

method.invoke(bean, (String) value);

}else if("Double".equals(fldtype)) {

method.invoke(bean, (Double) value);

}else if("int".equals(fldtype)) {

intval = Integer.valueOf((String) value);

method.invoke(bean, val);

}

}

}

}catch(Exception e) {

e.printStackTrace();

}

}

/**

* 拼接某屬性get 方法

*

*@paramfldname

*@return

*/

public staticString pareGetName(String fldname) {

if(null== fldname ||"".equals(fldname)) {

return null;

}

String pro ="get"+ fldname.substring(0,1).toUpperCase() + fldname.substring(1);

returnpro;

}

/**

* 拼接某屬性set 方法

*

*@paramfldname

*@return

*/

public staticString pareSetName(String fldname) {

if(null== fldname ||"".equals(fldname)) {

return null;

}

String pro ="set"+ fldname.substring(0,1).toUpperCase() + fldname.substring(1);

returnpro;

}

/**

* 判斷該方法是否存在

*

*@parammethods

*@parammet

*@return

*/

public static booleancheckMethod(Method methods[], String met) {

if(null!= methods) {

for(Method method : methods) {

if(met.equals(method.getName())) {

return true;

}

}

}

return false;

}

/**

* 把date 類轉(zhuǎn)換成string

*

*@paramdate

*@return

*/

public staticString fmlDate(Date date) {

if(null!= date) {

SimpleDateFormat sdf =newSimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.US);

returnsdf.format(date);

}

return null;

}

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市虫腋,隨后出現(xiàn)的幾起案子蕉扮,更是在濱河造成了極大的恐慌,老刑警劉巖震捣,帶你破解...
    沈念sama閱讀 222,627評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件尚辑,死亡現(xiàn)場(chǎng)離奇詭異贱勃,居然都是意外死亡刚操,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,180評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門伶椿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來辜伟,“玉大人,你說我怎么就攤上這事脊另〉冀疲” “怎么了?”我有些...
    開封第一講書人閱讀 169,346評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵偎痛,是天一觀的道長旱捧。 經(jīng)常有香客問我,道長踩麦,這世上最難降的妖魔是什么枚赡? 我笑而不...
    開封第一講書人閱讀 60,097評(píng)論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮谓谦,結(jié)果婚禮上贫橙,老公的妹妹穿的比我還像新娘。我一直安慰自己反粥,他們只是感情好卢肃,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,100評(píng)論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著星压,像睡著了一般践剂。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上娜膘,一...
    開封第一講書人閱讀 52,696評(píng)論 1 312
  • 那天,我揣著相機(jī)與錄音优质,去河邊找鬼竣贪。 笑死,一個(gè)胖子當(dāng)著我的面吹牛巩螃,可吹牛的內(nèi)容都是我干的演怎。 我是一名探鬼主播,決...
    沈念sama閱讀 41,165評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼避乏,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼爷耀!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起拍皮,我...
    開封第一講書人閱讀 40,108評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤歹叮,失蹤者是張志新(化名)和其女友劉穎跑杭,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體咆耿,經(jīng)...
    沈念sama閱讀 46,646評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡德谅,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,709評(píng)論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了萨螺。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片窄做。...
    茶點(diǎn)故事閱讀 40,861評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖慰技,靈堂內(nèi)的尸體忽然破棺而出椭盏,到底是詐尸還是另有隱情,我是刑警寧澤吻商,帶...
    沈念sama閱讀 36,527評(píng)論 5 351
  • 正文 年R本政府宣布掏颊,位于F島的核電站,受9級(jí)特大地震影響手报,放射性物質(zhì)發(fā)生泄漏蚯舱。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,196評(píng)論 3 336
  • 文/蒙蒙 一掩蛤、第九天 我趴在偏房一處隱蔽的房頂上張望枉昏。 院中可真熱鬧,春花似錦揍鸟、人聲如沸兄裂。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,698評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽晰奖。三九已至,卻和暖如春腥泥,著一層夾襖步出監(jiān)牢的瞬間匾南,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,804評(píng)論 1 274
  • 我被黑心中介騙來泰國打工蛔外, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蛆楞,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,287評(píng)論 3 379
  • 正文 我出身青樓夹厌,卻偏偏與公主長得像豹爹,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子矛纹,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,860評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容