beanUtils 对象之前的 相互赋值转换

public final class BeanUtils {

    /**
     * 将srcObject的字段值赋值到destObject对象中去
     *
     * @param srcObject
     * @param destObject
     * @param <S>
     * @param <T>
     * @return
     */
    public static <S, T> T initDestObject(S srcObject, T destObject) {
        Map<String,Object> srcMap = new HashMap<>();
        Class srcClass = srcObject.getClass();
        Field[] declaredFields = srcClass.getDeclaredFields();
        for (int i = 0; i < declaredFields.length; i++) {
            try {
                Field field = declaredFields[i];
                field.setAccessible(true);
                String fieldName = field.getName();
                Object value = field.get(srcObject);
                srcMap.put(fieldName, value);
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            }
        }
        try {
            destObject = initProperty(destObject, srcMap);
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        }
        System.out.println(srcMap);
        return destObject;
    }

    private static <T> T initProperty(T obj, Map<String,Object> map) throws IllegalAccessException {
        Class<?> clazz = obj.getClass();
        Field[] declaredFields = clazz.getDeclaredFields();
        for (int i = 0; i < declaredFields.length; i++) {
            declaredFields[i].setAccessible(true);
            String fieldName = declaredFields[i].getName();
            Set<String> keySet = map.keySet();
            for (String s : keySet) {
                if (fieldName.equals(s)) {
                    declaredFields[i].set(obj, map.get(s));
                }
            }
        }
        return obj;
    }
}

 

posted @ 2018-08-07 15:09  冷枚  阅读(171)  评论(0编辑  收藏  举报