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

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

作者: 柳源居士 | 来源:发表于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 类型。
    }
}

相关文章

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

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

  • 抽象工厂模式创建对象

    结合反射应用,使用class.forName反射创建对象,通过泛型约束参数类型新产品只需实现CommonAPI即可...

  • Java高级语言

    泛型 为什么需要泛型 重构相同函数体且不同类型返回值和参数时,可以使用泛型。而不需要多个重构函数比如: 泛型中的类...

  • Kotlin 学习小结(reified关键字探索)

    通过泛型及reified关键字实现同一方法不同类型的返回值如: 测试下方法 打印结果为

  • Kotlin-泛型和委托

    泛型 泛型的使用是为了程序有更好的扩展性。泛型类和泛型方法 泛型的高级特性java的泛型是通过类型擦除机制来实现的...

  • swift泛型协议在函数中做参数和返回值

    泛型协议在函数中作为参数和返回值类型使用泛型协议只能作为泛型的约束使用,不能直接作为函数参数或者返回值类型使用。就...

  • Java泛型

    本文介绍的知识点 泛型是什么? 泛型的使用在反射中使用泛型在集合类中使用泛型 关于泛型擦除如何理解?如何避免泛型擦...

  • Swift 泛型⑫

     泛型可以将类型参数化,提高代码复用率,减少代码量。注意: C++ 是通过实现多个不同类型的方法来实现泛型Swif...

  • 一文搞懂反射泛型和反射注解以及通过注解方式写一个BaseDao

    反射泛型和反射注解概括起来就三步: 自定义注解 通过反射获取注解值 使用自定义注解 最终案例 通过自定义注解,将数...

  • NPOI 生成Excel

    记录使用NPOI生成Excel的通用方法 NPOI安装,使用Nuget: 使用泛型方法,反射两种方式实现生成Exc...

网友评论

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

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