zoukankan      html  css  js  c++  java
  • 【工具】

    public class BeanPlusUtils extends BeanUtils {
        public static <S, T> List<T> copyListProperties(List<S> sources, Supplier<T> target) {
            return copyListProperties(sources, target, null);
        }
    
        public static <S, T> T copySingleProperties(S source, Supplier<T> target) {
            return copySingleProperties(source, target, null);
        }
    
        /**
         * 使用场景:Entity、Bo、Vo层数据的复制,因为BeanUtils.copyProperties只能给目标对象的属性赋值,却不能在List集合下循环赋值,因此添加该方法
         * 如:List<AdminEntity> 赋值到 List<AdminVo> ,List<AdminVo>中的 AdminVo 属性都会被赋予到值
         * S: 数据源类 ,T: 目标类::new(eg: AdminVo::new)
         */
        public static <S, T> List<T> copyListProperties(List<S> sources, Supplier<T> target,
                                                        ColaBeanUtilsCallBack<S, T> callBack) {
            if (CollectionUtils.isEmpty(sources)){
                return new ArrayList<>();
            }
            List<T> list = new ArrayList<>(sources.size());
            for (S source : sources) {
                T t = target.get();
                copyProperties(source, t);
                list.add(t);
                if (callBack != null) {
                    // 回调
                    callBack.callBack(source, t);
                }
            }
            return list;
        }
    
        public static <S, T> T copySingleProperties(S source, Supplier<T> target, ColaBeanUtilsCallBack<S, T> callBack) {
            T t = target.get();
            copyProperties(source, t);
            if (callBack != null) {
                // 回调
                callBack.callBack(source, t);
            }
            return t;
        }
    
        @FunctionalInterface
        public interface ColaBeanUtilsCallBack<S, T> {
    
            void callBack(S t, T s);
        }
    
        /**
         * 将集合对象中的类型转换成另一种类型
         *
         * @param collection 集合
         * @param clazz      目标对象
         * @param <T>
         * @return
         */
        public static <T> Collection<T> covertObject(Collection<?> collection, Class<T> clazz) {
            Collection<T> newCollection = collection.stream().map(oldObject -> {
                T instance = null;
                try {
                    instance = clazz.newInstance();
                } catch (Exception e) {
                    e.printStackTrace();
                }
                BeanUtils.copyProperties(oldObject, instance);
                return instance;
            }).collect(Collectors.toList());
            return newCollection;
        };
    }
  • 相关阅读:
    利用按钮打开tabBar页面
    git 推送出现 "fatal: The remote end hung up unexpectedly"
    常用的数据整理的JavaScript库
    github上打包的样式为什么在预览的时候,出现404
    window下node更新
    aws.s3的 upload 和putObject有什么区别
    vue项目打包之后页面空白解决办法
    key是数字的对象集合
    python pip 更换国内安装源(windows)
    python的sciter库Pysciter安装教程(win32 + win64)
  • 原文地址:https://www.cnblogs.com/lycsmzl/p/13391758.html
Copyright © 2011-2022 走看看