日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

java反射機制給實體類相同字段自動賦值實例

瀏覽:193日期:2022-08-26 15:34:25

一、封裝一個工具類

1、簡易版

package net.aexit.construct.acceptance.websky.utils;import java.lang.reflect.Field;import java.lang.reflect.Method;import java.util.HashMap;import java.util.Iterator;import java.util.Map;public class ClassReflection { /** * @param class1 用于賦值的實體類 * @param class2 需要待賦值的實體類 * 描述:反射實體類賦值 */ public static void reflectionAttr(Object class1,Object class2) throws Exception{ Class clazz1 = class1.getClass(); Class clazz2 = class2.getClass(); // 獲取兩個實體類的所有屬性 Field[] fields1 = clazz1.getDeclaredFields(); Field[] fields2 = clazz2.getDeclaredFields(); // 遍歷class1Bean,獲取逐個屬性值,然后遍歷class2Bean查找是否有相同的屬性,如有相同則賦值 for (Field f1 : fields1) { if(f1.getName().equals('id')) continue; //設置訪問權限 f1.setAccessible(true); Object value = f1.get(class1); for (Field f2 : fields2) { if(f1.getName().equals(f2.getName())){ //設置訪問權限 f2.setAccessible(true); f2.set(class2,value); } } } } }

2、復雜版

package net.utils;import java.lang.reflect.Field;import java.lang.reflect.Method;import java.util.HashMap;import java.util.Iterator;import java.util.Map;public class ClassReflection { /** * @param class1 用于賦值的實體類 * @param class2 需要待賦值的實體類 * 描述:反射實體類賦值 */ public static void reflectionAttr(Object class1,Object class2) throws Exception{ Class clazz1 = Class.forName(class1.getClass().getName()); Class clazz2 = Class.forName(class2.getClass().getName()); // 獲取兩個實體類的所有屬性 Field[] fields1 = clazz1.getDeclaredFields(); Field[] fields2 = clazz2.getDeclaredFields(); ClassReflection cr = new ClassReflection(); // 遍歷class1Bean,獲取逐個屬性值,然后遍歷class2Bean查找是否有相同的屬性,如有相同則賦值 for (Field f1 : fields1) { if(f1.getName().equals('id')) continue; Object value = cr.invokeGetMethod(class1 ,f1.getName(),null); for (Field f2 : fields2) { if(f1.getName().equals(f2.getName())){ Object[] obj = new Object[1]; obj[0] = value; cr.invokeSetMethod(class2, f2.getName(), obj); } } } } /** * * 執行某個Field的getField方法 * @param clazz 類 * @param fieldName 類的屬性名稱 * @param args 參數,默認為null * @return */ public Object invokeGetMethod(Object clazz, String fieldName, Object[] args) { String methodName = fieldName.substring(0, 1).toUpperCase()+ fieldName.substring(1); Method method = null; try { method = Class.forName(clazz.getClass().getName()).getDeclaredMethod('get' + methodName); return method.invoke(clazz); } catch (Exception e) { e.printStackTrace(); return ''; } } /** * * 執行某個Field的setField方法 * @param clazz 類 * @param fieldName 類的屬性名稱 * @param args 參數,默認為null * @return */ public Object invokeSetMethod(Object clazz, String fieldName, Object[] args) { String methodName = fieldName.substring(0, 1).toUpperCase()+ fieldName.substring(1); Method method = null; try { Class[] parameterTypes = new Class[1]; Class c = Class.forName(clazz.getClass().getName()); Field field = c.getDeclaredField(fieldName);parameterTypes[0] = field.getType(); method = c.getDeclaredMethod('set' + methodName,parameterTypes); return method.invoke(clazz,args); } catch (Exception e) { e.printStackTrace(); return ''; } } //map轉換為json字符串 public static String hashMapToJson(HashMap map) { String string = '{'; for (Iterator it = map.entrySet().iterator(); it.hasNext();) { Map.Entry e = (Map.Entry) it.next(); string += '’' + e.getKey() + '’:'; string += '’' + e.getValue() + '’,'; } string = string.substring(0, string.lastIndexOf(',')); string += '}'; return string; }}

二、調用工具類

ClassReflection.reflectionAttr(class1, class2);

三、賦值完成

注意:

1、id不賦值,主要給數據庫兩張表賦值,比如當前表和歷史表,把當前表的相同字段的值賦值給歷史表

2、簡單版設置private修飾的字段可以被訪問

補充知識:利用java反射原理給實體類注值

寫一個通用java注值的方法,使用泛型T,將其封裝在DbHelp中(相信DbHelper不用我解釋是什么),使dao調用直接獲取所需要的對象,也正應用了我們java面向對象的思想

public static<T> T getBean(String sql,Class<T> clazz){ Method[] ms=clazz.getDeclaredMethods(); T t=null; try { t=clazz.newInstance(); for (Method m : ms) {String mn=m.getName();if(mn.startsWith('set')){ Object obj=map.get((mn.replace('set', '').toUpperCase()));//取到set方法對應數據庫字段的值 String pt=m.getParameterTypes()[0].toString();//取到set方法的參數類型 if(obj!=null){ if(pt.endsWith('int')||pt.endsWith('Integer')){ m.invoke(t, ((BigDecimal)obj).intValue()); }else if(pt.endsWith('Double')||pt.endsWith('double')){ m.invoke(t, ((BigDecimal)obj).doubleValue()); }else if(pt.endsWith('Date')){ m.invoke(t, (Timestamp)obj); }else { m.invoke(t, obj); } }} } } catch (InstantiationException | IllegalAccessException | IllegalArgumentException | InvocationTargetException e) { // TODO Auto-generated catch block e.printStackTrace(); } return t;}

以上這篇java反射機制給實體類相同字段自動賦值實例就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Java
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
三级亚洲高清视频| 成人台湾亚洲精品一区二区| 欧美经典一区| 日韩精品午夜视频| 在线人成日本视频| 精品一区二区三区中文字幕视频| 日本aⅴ亚洲精品中文乱码| 亚洲主播在线| 亚洲国产专区校园欧美| 亚洲不卡视频| 亚洲精品在线国产| 日韩欧美久久| 日韩欧美精品一区二区综合视频| 99tv成人| caoporn视频在线| 国产情侣久久| 久久99性xxx老妇胖精品| 欧美日韩视频免费看| 久久精品超碰| 美日韩一区二区三区| 国产精品久久久久久久久久齐齐 | 婷婷综合五月| 欧美国产另类| 三级欧美在线一区| 国产亚洲精品自拍| 亚洲午夜视频| 日韩在线一二三区| 久久国产日韩欧美精品| 美女视频黄 久久| 色在线中文字幕| 欧美va亚洲va日韩∨a综合色| 99国产精品99久久久久久粉嫩| 最新亚洲激情| 四虎成人精品一区二区免费网站| 另类av一区二区| 在线日韩av| 国产成人免费| 国产韩日影视精品| 亚洲精品伊人| 国产精品v日韩精品v欧美精品网站 | 国产不卡精品在线| 热久久久久久久| 亚洲a级精品| 精品视频高潮| 精品国产免费人成网站| 午夜欧美理论片| 日韩高清电影免费| 亚洲美女久久精品| 999在线观看精品免费不卡网站| 久久中文字幕av一区二区不卡| 欧美午夜不卡| 欧美精品影院| 91精品一区二区三区综合| 日韩一级欧洲| 久久wwww| 欧美日韩第一| 久久成人国产| 久久99久久人婷婷精品综合| www.com.cn成人| 婷婷成人在线| 奇米色欧美一区二区三区| 国产v日韩v欧美v| 久久福利一区| 久久久亚洲欧洲日产| 亚洲精品九九| 国产精品原创| 欧美专区18| 精品淫伦v久久水蜜桃| 好看不卡的中文字幕| 欧美激情三区| 免费在线观看日韩欧美| 日韩综合在线| 视频一区日韩精品| 97精品国产一区二区三区| 先锋亚洲精品| 高清久久精品| 亚洲精品动态| 伊人久久婷婷| 久久只有精品| 欧美精品一区二区三区精品| 久久午夜影院| 日本a级不卡| 99成人在线| 激情黄产视频在线免费观看| 亚洲精品日韩久久| 久久久夜精品| 福利视频一区| 国产精品一级| 三级久久三级久久久| 久久国产成人午夜av影院宅| 国产精品www994| 日韩精品成人在线观看| 国内精品99| 日本不卡免费高清视频在线| 国产日韩欧美一区二区三区在线观看| 九一成人免费视频| 97精品国产福利一区二区三区| 日韩和欧美一区二区三区| 亚洲美洲欧洲综合国产一区| 日韩电影免费在线观看| 美女国产一区二区三区| 日韩av资源网| 日日摸夜夜添夜夜添国产精品| 中文亚洲免费| 欧美日韩在线观看首页| 美女视频一区在线观看| 欧美一区二区三区久久精品| 美女精品一区| 久久久久免费| 精品深夜福利视频| 国产亚洲高清一区| 午夜亚洲福利| 久久不射网站| 99riav1国产精品视频| 91超碰国产精品| 午夜av一区| 亚洲综合电影一区二区三区| 亚洲精品2区| av成人国产| 在线一区免费| 欧美~级网站不卡| 婷婷中文字幕一区| 性一交一乱一区二区洋洋av| 国产精品毛片在线| 蜜臀va亚洲va欧美va天堂| 亚洲欧美日本日韩| 天堂va在线高清一区| 亚洲不卡视频| 青青在线精品| 国产日韩高清一区二区三区在线| 18国产精品| 精品亚洲二区| 精品捆绑调教一区二区三区| 久久精品免费一区二区三区| 国产成人黄色| 欧美久久天堂| 黄色不卡一区| 免费视频一区二区| 欧美亚洲一区二区三区| 美日韩一区二区三区| 韩国女主播一区二区三区| 久久久久久久欧美精品| 精品一区在线| 在线看片日韩| 日韩欧美中文字幕一区二区三区| 好吊一区二区三区| 9久re热视频在线精品| 亚洲一区av| 国产亚洲激情| 欧美亚洲tv| 日韩国产在线| 视频一区二区不卡| 久久不见久久见免费视频7| 97人人精品| 99riav国产精品| 欧美视频久久| 日韩国产在线| 中文字幕成人| 成人日韩av| 国产一区二区精品| 欧美天堂一区| 国产99在线| 欧美另类专区| 老牛影视一区二区三区| 日韩国产在线观看| 国产伦精品一区二区三区千人斩 | 久久性天堂网| 国产精品成人自拍| 国产91一区| 国产欧美久久一区二区三区| 日韩和的一区二在线| 亚洲精品伊人| 色偷偷色偷偷色偷偷在线视频| 国产精品宾馆| 好看的亚洲午夜视频在线| 欧美日韩亚洲一区二区三区在线| 久久97久久97精品免视看秋霞| 日韩在线观看不卡| 国产欧美88| 午夜在线观看免费一区| 美美哒免费高清在线观看视频一区二区| 国产精品国码视频| 久久av偷拍| 亚洲一区二区日韩| 五月天av在线| 精品欠久久久中文字幕加勒比| 蜜桃国内精品久久久久软件9| 欧美日本三区| 亚洲免费在线| 成人午夜网址| 欧美日韩精品一区二区视频| 国内精品麻豆美女在线播放视频| 伊人久久一区| 在线视频精品| 国产高清一区| 欧美日韩国产欧| 蜜桃久久久久| 麻豆91在线播放| 视频精品一区二区| 激情婷婷久久|