国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

自定義對象數據替換其字段值

2019-11-08 03:13:42
字體:
來源:轉載
供稿:網友
import java.beans.BeanInfo;import java.beans.Introspector;import java.beans.PRopertyDescriptor;import java.lang.reflect.Field;import java.lang.reflect.Method;import java.util.HashMap;import java.util.Map;/** * 數據操作工具類 * @author xuyang * @time 2016/11/10 15:58 */public class DataHelper {    /**     * 替換對象的字段數據(對象類型必須相同)     * @param sourceObject 被替換的源數據對象 replaceObject 替換的數據對象     * @return Object 替換后的數據對象     * @author xuyang     * @time 2016/11/10 15:58     */    public static <T> T updateObject(T sourceObject,T replaceObject){        Class<?> sourceClazz = sourceObject.getClass();        Field[] sourceFields = sourceClazz.getDeclaredFields();        Class<?> replaceClazz = sourceObject.getClass();        Field[] replaceFields = replaceClazz.getDeclaredFields();        try {            for (int i = 0;i < replaceFields.length;i++){                Field replaceField = replaceFields[i];                replaceField.setaccessible(true);                //字段子更新賦值判斷                if (null != replaceField.get(replaceObject)) {                    Field sourceField = sourceFields[i];                    sourceField.setAccessible(true);                    sourceField.set(sourceObject,replaceField.get(replaceObject));                }            }        }catch (Exception e){            e.printStackTrace();        }        return sourceObject;    }    /**     * 替換對象的字段數據(對象類型可以不同,只替換同類型同字段名的字段值)     * @param sourceObject 被替換的源數據對象 replaceObject 替換的數據對象     * @return Object 替換后的數據對象     * @author xuyang     * @time 2016/11/10 15:58     */    public static <T> T updateDifObject(T sourceObject,Object replaceObject){        Class<?> sourceClazz = sourceObject.getClass();        Field[] sourceFields = sourceClazz.getDeclaredFields();        Class<?> replaceClazz = replaceObject.getClass();        Field[] replaceFields = replaceClazz.getDeclaredFields();        try {            for (int i = 0;i < replaceFields.length;i++){                Field replaceField = replaceFields[i];                replaceField.setAccessible(true);                //字段子更新賦值判斷                if (null != replaceField.get(replaceObject)) {                    for (int j = 0; j < sourceFields.length; j++) {                        Field sourceField = sourceFields[j];                        if(sourceField.getName().equals(replaceField.getName())                                && sourceField.getType().getName().equals(replaceField.getType().getName())){                            sourceField.setAccessible(true);                            sourceField.set(sourceObject,replaceField.get(replaceObject));                            break;                        }                    }                }            }        }catch (Exception e){            e.printStackTrace();        }        return sourceObject;    }    /**     * 判斷對象某些值是否為空     * @param object     * @param <T>     * @return     * @author gaoliubei     */    public static <T> String verify(T object,String[] needVerify)    {        Class<?> sourceClazz = object.getClass();        Field [] fields = sourceClazz.getDeclaredFields();        StringBuilder result = new StringBuilder();        boolean isLegal = true;        for (int i = 0;i < fields.length;i++)        {            Field field = fields[i];            field.setAccessible(true);            try {                Object value = field.get(object);                if (value == null)                {                    String filedName = field.getName();                    boolean isd = false;                    for (int j = 0;j < needVerify.length; j++)                    {                        String isResult = needVerify[j];                        if (isResult == filedName)                        {                            isLegal = false;                            isd = true;                            break;                        }                    }                    if (isd)                    {                        result.append(filedName+" : 不能為空 ");                    }                }            } catch (IllegalAccessException e) {                e.printStackTrace();            }        }        if (!isLegal)        {            return result.toString();        }        return null;    }    /**     * map轉對象     * @param map     * @param beanClass     * @return     * @throws Exception     */    public static Object mapToObject(Map<String, Object> map, Class<?> beanClass) {        try {            if (map == null)                return null;            Object obj = beanClass.newInstance();            BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass());            PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();            for (PropertyDescriptor property : propertyDescriptors) {                Method setter = property.getWriteMethod();                if (setter != null) {                    setter.invoke(obj, map.get(property.getName()));                }            }            return obj;        }catch (Exception e){            e.printStackTrace();            return null;        }    }    /**     * 對象轉map     * @param obj     * @return     */    public static Map<?, ?> objectToMap(Object obj) {        try {            if(obj == null)                return null;            Map<String, Object> map = new HashMap<String, Object>();            BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass());            PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();            for (PropertyDescriptor property : propertyDescriptors) {                String key = property.getName();                if (key.compareToIgnoreCase("class") == 0) {                    continue;                }                Method getter = property.getReadMethod();                Object value = getter!=null ? getter.invoke(obj) : null;                map.put(key, value);            }            return map;        }catch (Exception e){            e.printStackTrace();            return null;        }    }}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 金堂县| 林甸县| 平乐县| 靖州| 固始县| 溧阳市| 襄垣县| 昌都县| 景洪市| 克山县| 仙居县| 马尔康县| 城固县| 旺苍县| 临沂市| 庆安县| 杨浦区| 静乐县| 平乡县| 大兴区| 阜康市| 长武县| 鹤壁市| 沐川县| 安图县| 陇川县| 安徽省| 邹城市| 全椒县| 南靖县| 中牟县| 宁强县| 陆良县| 祥云县| 罗平县| 明光市| 深圳市| 开江县| 五原县| 哈尔滨市| 常熟市|