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

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

java反射機(jī)制給實(shí)體類(lèi)相同字段自動(dòng)賦值實(shí)例

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

一、封裝一個(gè)工具類(lèi)

1、簡(jiǎn)易版

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 用于賦值的實(shí)體類(lèi) * @param class2 需要待賦值的實(shí)體類(lèi) * 描述:反射實(shí)體類(lèi)賦值 */ public static void reflectionAttr(Object class1,Object class2) throws Exception{ Class clazz1 = class1.getClass(); Class clazz2 = class2.getClass(); // 獲取兩個(gè)實(shí)體類(lèi)的所有屬性 Field[] fields1 = clazz1.getDeclaredFields(); Field[] fields2 = clazz2.getDeclaredFields(); // 遍歷class1Bean,獲取逐個(gè)屬性值,然后遍歷class2Bean查找是否有相同的屬性,如有相同則賦值 for (Field f1 : fields1) { if(f1.getName().equals('id')) continue; //設(shè)置訪問(wèn)權(quán)限 f1.setAccessible(true); Object value = f1.get(class1); for (Field f2 : fields2) { if(f1.getName().equals(f2.getName())){ //設(shè)置訪問(wèn)權(quán)限 f2.setAccessible(true); f2.set(class2,value); } } } } }

2、復(fù)雜版

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 用于賦值的實(shí)體類(lèi) * @param class2 需要待賦值的實(shí)體類(lèi) * 描述:反射實(shí)體類(lèi)賦值 */ public static void reflectionAttr(Object class1,Object class2) throws Exception{ Class clazz1 = Class.forName(class1.getClass().getName()); Class clazz2 = Class.forName(class2.getClass().getName()); // 獲取兩個(gè)實(shí)體類(lèi)的所有屬性 Field[] fields1 = clazz1.getDeclaredFields(); Field[] fields2 = clazz2.getDeclaredFields(); ClassReflection cr = new ClassReflection(); // 遍歷class1Bean,獲取逐個(gè)屬性值,然后遍歷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); } } } } /** * * 執(zhí)行某個(gè)Field的getField方法 * @param clazz 類(lèi) * @param fieldName 類(lèi)的屬性名稱(chēng) * @param args 參數(shù),默認(rèn)為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 ''; } } /** * * 執(zhí)行某個(gè)Field的setField方法 * @param clazz 類(lèi) * @param fieldName 類(lèi)的屬性名稱(chēng) * @param args 參數(shù),默認(rèn)為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轉(zhuǎn)換為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; }}

二、調(diào)用工具類(lèi)

ClassReflection.reflectionAttr(class1, class2);

三、賦值完成

注意:

1、id不賦值,主要給數(shù)據(jù)庫(kù)兩張表賦值,比如當(dāng)前表和歷史表,把當(dāng)前表的相同字段的值賦值給歷史表

2、簡(jiǎn)單版設(shè)置private修飾的字段可以被訪問(wèn)

補(bǔ)充知識(shí):利用java反射原理給實(shí)體類(lèi)注值

寫(xiě)一個(gè)通用java注值的方法,使用泛型T,將其封裝在DbHelp中(相信DbHelper不用我解釋是什么),使dao調(diào)用直接獲取所需要的對(duì)象,也正應(yīng)用了我們java面向?qū)ο蟮乃枷?/p>

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方法對(duì)應(yīng)數(shù)據(jù)庫(kù)字段的值 String pt=m.getParameterTypes()[0].toString();//取到set方法的參數(shù)類(lèi)型 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反射機(jī)制給實(shí)體類(lèi)相同字段自動(dòng)賦值實(shí)例就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Java
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
日韩精品一区第一页| 久久国产欧美日韩精品| 国产精品视区| 久久精品影视| 狠狠久久伊人中文字幕| 久久影院一区二区三区| 精品国产亚洲日本| 中文字幕在线视频久| 久久久91麻豆精品国产一区| 国产 日韩 欧美 综合 一区| 久久精品av| 亚洲在线国产日韩欧美| 亚洲麻豆一区| 婷婷成人av| 日韩中文字幕av电影| 婷婷精品在线| 国产高清日韩| 98精品久久久久久久| 免费成人网www| 亚洲97av| 在线一区av| 中文字幕日韩亚洲| 精品国产日韩欧美精品国产欧美日韩一区二区三区 | 国产精品嫩草影院在线看| 国产精品久av福利在线观看| 日本免费一区二区三区四区| 免费欧美在线视频| 国产精品久久777777毛茸茸| 亚洲va在线| 亚洲免费福利一区| 精品一区二区三区中文字幕| 99视频一区| 久久99久久人婷婷精品综合| 欧美日韩在线网站| 欧美日韩精品一区二区三区视频 | 国产精品日本| 国产精品videossex久久发布| 日韩精品一区二区三区免费观看| 午夜性色一区二区三区免费视频| 国产成人精品三级高清久久91| 女人av一区| 久久国内精品自在自线400部| 日产精品一区二区| 天堂а√在线最新版中文在线| 99国产精品私拍| 国产精品久久久久久久久久妞妞 | 91精品韩国| 男女男精品网站| 亚洲欧洲高清| 日韩av中文字幕一区二区三区| 91看片一区| 亚久久调教视频| 久久国产免费| 少妇精品久久久一区二区三区| 日韩一区亚洲二区| 亚洲一卡久久| 久久av免费| 亚洲手机视频| 蜜桃久久久久久| 国产suv精品一区| 蜜桃成人精品| 亚洲影院天堂中文av色| 国产精品v一区二区三区| 88xx成人免费观看视频库| 六月婷婷一区| 久久99性xxx老妇胖精品| 成人免费电影网址| 91精品尤物| 九九精品调教| 91精品国产自产精品男人的天堂| 国产精品伦理久久久久久| 蜜桃久久久久久| 国产一区丝袜| 中文字幕日韩高清在线| 精品国产18久久久久久二百| 日韩啪啪电影网| 亚洲精品第一| 成人福利视频| 91亚洲精品在看在线观看高清| 欧美aa在线观看| 国产精品久久久久久模特| 国产韩日影视精品| 久久精品免视看国产成人| 亚洲激情国产| 黑森林国产精品av| 一区二区国产在线观看| 精品国内亚洲2022精品成人| 亚洲图片久久| 香蕉视频亚洲一级| 国产精品地址| 野花国产精品入口| 精品国产黄a∨片高清在线| 综合干狼人综合首页| 天堂日韩电影| 国产一区二区三区91| 亚洲+小说+欧美+激情+另类| 亚洲午夜视频| 91看片一区| 水蜜桃久久夜色精品一区| 91精品国产经典在线观看| 国产农村妇女精品一区二区| 欧美日韩国产观看视频| 欧美精品99| 97精品久久| 天堂av在线一区| 国产一区二区三区天码| 日韩avvvv在线播放| 爽好久久久欧美精品| 久久国产电影| 免费高潮视频95在线观看网站| 精品视频久久| 麻豆传媒一区二区三区| 国产日韩一区| 日韩精品三级| 美女精品网站| 欧美va天堂| 国产不卡人人| 久久爱www成人| 日本亚洲不卡| 国产精品美女久久久| 日韩成人高清| 视频一区中文字幕| 五月婷婷亚洲| 国产综合婷婷| 国产国产精品| 怡红院精品视频在线观看极品| 激情欧美国产欧美| 在线视频观看日韩| 今天的高清视频免费播放成人| 免费高潮视频95在线观看网站| 美腿丝袜亚洲三区| 国产精品扒开腿做爽爽爽软件| 国产精品嫩模av在线| 久久国际精品| 国产精品资源| 国产精品一区二区av交换| 亚洲深夜福利在线观看| 亚洲精品欧洲| 国产精品3区| 国产一区二区视频在线看| 欧美激情综合| 国产一区二区三区四区二区| 久久一区欧美| 国产传媒在线观看| 色黄视频在线观看| 天堂8中文在线最新版在线| 亚洲毛片在线免费| 日韩欧乱色一区二区三区在线| 91嫩草精品| 国产精品三p一区二区| 久久中文字幕一区二区三区| 久久精品超碰| 国产精品久久久久毛片大屁完整版| 国产精品亚洲综合久久| 麻豆中文一区二区| 亚洲啊v在线| 91成人网在线观看| 在线精品亚洲| 国产欧美88| 成人国产精品一区二区网站| 婷婷成人在线| 日韩欧美激情| 国产拍在线视频| 亚洲一区二区毛片| 日韩不卡在线观看日韩不卡视频| 精品一区二区三区亚洲 | 高清av不卡| 亚洲一区二区三区免费在线观看| 欧美偷窥清纯综合图区| 水蜜桃久久夜色精品一区| 99视频+国产日韩欧美| 激情欧美一区二区三区| 婷婷综合国产| 国产aⅴ精品一区二区三区久久| 91久久视频| 麻豆精品av| 欧美专区在线| 首页国产精品| 日韩精品中文字幕一区二区| 日韩精品导航| 福利一区视频| 亚洲+小说+欧美+激情+另类| 日韩电影免费网址| 综合一区在线| 久久久久91| 国产欧美日韩一区二区三区四区 | 久久精品资源| 中文一区一区三区免费在线观| caoporn视频在线| 91精品综合| 日本欧美韩国一区三区| 蜜桃tv一区二区三区| 六月丁香综合在线视频| 中文一区一区三区免费在线观| 欧美好骚综合网| 国产一卡不卡| 蘑菇福利视频一区播放| 日韩免费一区| 国产激情综合| 一区二区国产在线|