通过map更新对象对应字段的值

public static Object ChangeValByMap(Map<String, Object> map, Object obj) {
        if(null == obj){
            return null;
        }
        Class clz = obj.getClass();
        Field[] fields = clz.getDeclaredFields();
        Set<String> fieldNames = new HashSet<>();
        Arrays.stream(fields).forEach(field -> {
            fieldNames.add(field.getName());
        });
        map.forEach(((key, val) -> {
            try {
                if(fieldNames.contains(key)){
                    Field field = clz.getDeclaredField(key);
                    field.setAccessible(true);
                    if("java.lang.Long".equals(field.getType().getName())){
                        if( null == val || "".equals(val)){
                            field.set(obj, null);
                        } else {
                            field.set(obj, Long.valueOf(val.toString()));
                        }
                    } else if("java.math.BigDecimal".equals(field.getType().getName())){
                        if( null == val || "".equals(val)){
                            field.set(obj, null);
                        } else {
                            field.set(obj, new BigDecimal(val.toString()));
                        }
                    } else {
                        field.set(obj, val);
                    }
                }
            } catch (NoSuchFieldException | IllegalAccessException e) {
                e.printStackTrace();
            }
        }));
        return obj;
    }
经验分享 程序员 微信小程序 职场和发展