BeanUtils与PropertyUtils区别以及java.util.Date发生异常问题:
除BeanUtils外还有一个名为PropertyUtils的工具类,它也提供copyProperties()方法,作用与BeanUtils的同名方法十分相似,主要的区别在于后者提供类型转换功能,即发现两个JavaBean的同名属性为不同类型时,在支持的数据类型范围内进行转换,而前者不支持这个功能,但是速度会更快一些。BeanUtils支持的转换类型如下:

    * 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是被支持的。因此如果对象包含时间类型的属性,且希望被转换的时候,一定要使用java.sql.Date类型。否则在转换时会提示argument mistype异常。

解决方法一:如果变为java.sql.Date这样用BeanUtils用可以和String进行copy property了.
Address1 addr3=new Address1();
       System.out.println(StringUtils.center("test", 56,"-"));
       addr2.setDate(Date.valueOf("2007-5-9"));
//     PropertyUtils.copyProperties(addr2, addr3);
       BeanUtils.copyProperties(addr3, addr2);
       System.out.println(addr3.getDate());
解决方法二:自定义Converter的方法:Defining Your Own Converters
The ConvertUtils class supports the ability to define and register your own String --> Object conversions for any given Java class. Once registered, such converters will be used transparently by all of the BeanUtilsmethods (including populate()). To create and register your own converter, follow these steps:
  • Write a class that implements the Converter interface. The convert() method should accept thejava.lang.Class object of your application class (i.e. the class that you want to convert to, and a String representing the incoming value to be converted.
  • At application startup time, register an instance of your converter class by calling theConvertUtils.register() method.
代码如下:
import java.text.ParseException;
import java.text.SimpleDateFormat;
import org.apache.commons.beanutils.Converter;
publicclass CustomerDateConverter implements Converter {
    privatefinalstatic SimpleDateFormat DATE_FORMATE_SHOW = new SimpleDateFormat("yyyy-MM-dd");
    public Object convert(Class type, Object value){
       // TODO Auto-generated method stub
       if (type.equals(java.util.Date.class) ) {
              try {
                  returnDATE_FORMATE_SHOW.parse(value.toString());
              } catch (ParseException e) {
                  // TODO Auto-generated catch block
                  e.printStackTrace();
              }
       }
       returnnull;
    }
}
public java.lang.Object convert(java.lang.Class type,
                                java.lang.Object value)
Convert the specified input object into an output object of the specified type.
Parameters:
type - Data type to which this value should be converted (要转换的类型)
value - The input value to be converted   (输入的值)
Returns:
The converted value
测试代码:
       System.out.println(StringUtils.center("test", 56,"-"));
Address1 addr1=new Address1(); //Address1中的date是String
Address2 addr2=new Address2(); //Address1中的date是java.util.Date
        Addr1.setDate("2007-2-6");
        
        CustomerDateConverter dateConverter = new CustomerDateConverter (); 
        ConvertUtils.register(dateConverter,Date.class);  
//上面两句是关键!
      
        BeanUtils.copyProperties(addr2, addr1);

System. out .println(addr2.getDate().toLocaleString());

BeanUtils与PropertyUtils区别相关推荐

  1. Bean复制的几种框架性能比较(BeanUtils、PropertyUtils、BeanCopier)

    作者:费晓晖 cnblogs.com/kaka/archive/2013/03/06/2945514.html 作为一个新员工,一个首要的工作就是阅读别人的代码,阅读代码的诸多好处就不说了,我就直奔主 ...

  2. java beanutils 性能_对比BeanUtils、PropertyUtils、BeanCopier的性能消耗

    主要代码 定义2个bean对象: public class copyPropertiesData1 { private Integer id; public Integer getId() { ret ...

  3. PropertyUtils.copyProperties和BeanUtils.copyProperties使用区别

    位于org.apache.commons.beanutils包里面的这两个参数拷贝方法可以复制一个对象中相同名字的参数值到另一个对象,能简化很多代码,但是这两个copy方法使用起来有很大区别. /** ...

  4. 工具类:BeanUtils和PropertyUtils的区别

    相同点: 都是浅拷贝,都提供了copyProperties()方法,只要属性名相同就可以从源bean中拷贝值到目标bean中 不同点: BeanUtils.copyProperties("转 ...

  5. BeanUtils.copyProperties VS PropertyUtils.copyProperties

    1. 通过反射将一个对象的值赋值个另外一个对象(前提是对象中属性的名字相同). 2. BeanUtils.copyProperties(obj1,obj2); 经常闹混不知道是谁给谁赋值,无意中先到& ...

  6. BeanUtils.copyProperties() 用法

    转载自 https://blog.csdn.net/jdjdndhj/article/details/62056137 第一步: BeanUtils.copyProperties()与Property ...

  7. java内省的意思,java内省机制 + 内省是什么 + 内省实现方式 + 和反射的区别

    见:https://zhidao.baidu.com/question/434288330.html.http://blog.csdn.net/u014394715/article/details/5 ...

  8. BeanUtils.copyProperties使用

    BeanUtils提供对Java反射和自省API的包装.其主要目的是利用反射机制对JavaBean的属性进行处理.我们知道,一个JavaBean通常包含了大量的属性,很多情况下,对JavaBean的处 ...

  9. java内省的意思_java内省和反射的区别

    展开全部 经过多方面的资料搜集整理,写下了这篇文章,本文主要讲解java的反射和内e68a843231313335323631343130323136353331333363366237省机制,希望对 ...

  10. 谈谈Java开发中的对象拷贝

    在Java开发工作中,有很多时候我们需要将不同的两个对象实例进行属性复制,从而基于源对象的属性信息进行后续操作,而不改变源对象的属性信息.这两个对象实例有可能是同一个类的两个实例,也可能是不同类的两个 ...

最新文章

  1. ubuntu18 安装python3.8.tgz
  2. linux 反弹shell(二)反弹shell的本质
  3. (原创)Android6.0亮屏流程之Keyguard Window绘制
  4. js设计模式-组合模式
  5. Angular里的style property binding的一个例子
  6. linux mint 最新版,Linux Mint安装最新版R
  7. PageHelper分页插件使用
  8. 用python写用手机发邮件_如何用python写发邮件?
  9. 第二周作业购物车程序
  10. Springboot实现销售团队管理系统
  11. 十五届恩智浦智能车-四十天做四轮-调车日记
  12. 支付接口申请_微信小程序商城如何开通支付功能
  13. mysql now()函数调用系统时间不对修正方法
  14. 毕业设计——基于STM32的家庭健康监测系统
  15. 微信公众号文章阅读数和点赞数采集接口
  16. [gdc13]dx11效率优化
  17. 计算机无法识别出cd驱动器,迅捷(FAST)免驱无线网卡插到电脑上无法识别CD驱动器怎么解决?【图解】...
  18. 制作一个浪漫的表白网页
  19. oracle 查询调用某一存储过程的job,oracle job 调用存储过程的使用
  20. 揭秘你喜欢的3D电影、游戏角色的制作过程!

热门文章

  1. comsol光学模块案例
  2. VGG16网络,VGG19
  3. MicroSIP注册点星PBX后拨打电话undefined external error故障解决方法
  4. Eclipse 9.x 10.0 之破解详细步骤
  5. 如何用c语言编码判断质数,如何用C语言筛选法判断质数
  6. linux下安装百度云音乐,linux 安装网易云音乐
  7. python catia 接口_CATIA二次开发工程制图接口:
  8. 基于灰度的模板匹配算法
  9. 《刺杀骑士团长》读后感
  10. 计算机网络原理最详细解说