美文网首页
通过使用泛型和反射,实现对不同类的字段统一返回

通过使用泛型和反射,实现对不同类的字段统一返回

作者: 柳源居士 | 来源:发表于2023-01-31 18:47 被阅读0次

    Spring 的 BeanUtils 中的 copyProperties方法。通过泛型,来设置传入Bean,与传出Bean的字段赋值

    import org.springframework.beans.BeanUtils;
    
    public class BeanCopyUtil {
    
        private BeanCopyUtil() {
        }
    
        public static <T> T copyBean(Object source,Class<T> clazz) {
            //通过指定泛型T,来返回传入的对象的类型,传什么类型进来,就返回什么类型出去
            T result = null;
            try {
                //java反射,获得传入对象的无参实例
                result = clazz.getDeclaredConstructor().newInstance();
                //spring 的beanutil copy 一样的field
                BeanUtils.copyProperties(source, result);
    
            } catch (Exception e) {
                e.printStackTrace();
            }
            return result;
        }
    
        public static <T,S> List<T> resultListCopy(List<S> list, Class<T> clazz){
            return  list.stream()   //把传入的list 流化,通过map遍历
                    .map(o ->copyBean(o,clazz) )   //把每个元素o ,通过copyBean copy field
                    .collect(Collectors.toList());    //结果list 化,list 类型为传入的clazz 类型。
        }
    }
    
    

    相关文章

      网友评论

          本文标题:通过使用泛型和反射,实现对不同类的字段统一返回

          本文链接:https://www.haomeiwen.com/subject/melbhdtx.html