• java中 BeanUtils.copyProperties的用法


            BeanUtils提供了对java发射和自省API的包装,这里对BeanUtils.copyProperties的用法做一个小小的介绍。

            通过函数名可以知道,copyProperties函数是对属性进行拷贝,该函数有两个参数,一个是原始的数据,另一个是接收这些属性的数据。这里给大家介绍一个我遇到的一个坑:在不同的jar包中,该函数的两个参数的位置不一样,有一种是copyProperties(java.lang.Object dest , java.lang.Object source);另外一种恰恰相反,copyProperties(java.lang.Object source , java.lang.Object dest),因此在实际使用的时候需要注意参数的位置。

            当两个对象之间的属性完全一样时,毫无疑问调用copyProperties时完全成功的,但是如果两个对象之间存在不同的属性时,会发生什么情况呢,BeanUtils则不对这些属性进行处理,需要程序员手动处理。

            除了BeanUtils以外,还有一个名为PropertyUtils的工具类,该类中也提供了copyProperties()方法,这个方法与前面说的方法相似,唯一不同点是PropertyUtils的工具类里面的copyProperties()方法提供类型转换功能,可以在支持的数据类型内进行数类型转换。由于增加了类型转换,因此速度会稍微慢一些。propertyUtils支持的转换类型如下:

    * java.lang.BigDecimal   
      
    * java.lang.BigInteger   
      
    * boolean and java.lang.Boolean   
      
    * byte and java.lang.Byte   
      
    * char and java.lang.Character   
      
    * java.lang.Class   
      
    * double and java.lang.Double   
      
    * float and java.lang.Float   
      
    * int and java.lang.Integer   
      
    * long and java.lang.Long   
      
    * short and java.lang.Short   
      
    * java.lang.String   
      
    * java.sql.Date   
      
    * java.sql.Time   
      
    * java.sql.Timestamp

    需要注意的是这里不支持java.util.Date,只支持java.sql.Date,因此在进行数据类型转换时需要注意这个问题。

    BeanUtils.copyProperties虽然很实用,但是其花费的时间比较长,超过手动调用get和set方法,如果对时间没有太大要求可以考虑用这个函数。

    本文参考自:https://www.cnblogs.com/HassanBlog/articles/3200239.html

  • 相关阅读:
    [51nod1247]可能的路径(思维题)
    天梯赛L1020 帅到没朋友(map的使用)(模拟,数组非排序去重)
    洛谷 p1030 树的遍历
    天梯赛L1046 整除光棍(模拟)
    牛客,并查集,简单dp经商
    天梯赛L1043 阅览室 模拟题
    天梯赛L1049(模拟+vector的使用)
    天梯赛L1011,简单模拟
    codeforces 1201 c
    天梯赛L2003月饼(简单排序题)
  • 原文地址:https://www.cnblogs.com/fpqi/p/9603769.html
Copyright © 2020-2023  润新知