BeanUtils.copyProperties时日期的拷贝

首先定义一个Converter的Date实现类
import  java.util.Date;

import  org.apache.commons.beanutils.ConversionException;
import  org.apache.commons.beanutils.Converter;

import  cn.sh.cares.commons.excel.util.ExcelUtils;

public   class  DateConverter  implements  Converter {

    
public  Object convert(Class type, Object value) {
    
if (value  ==   null ) {
        
return   null ;
    }
    
    
if (value  instanceof  Date) {
        
return  value;
    }
    
    
if (value  instanceof  Long) {
        Long longValue 
=  (Long) value;
        
return   new  Date(longValue.longValue());
    }
    
        
try  {
            
return  ExcelUtils.SIMPLE_DATE_FORMATER.parse(value.toString());
        } 
catch  (Exception e) {
            
throw   new  ConversionException(e);
        }
    }
}

      这个主要完成由String或者Long向Date型拷贝时如何转换,这样我们在转换之前只要在ConvertUtils中注册这个Converter就可以了,比如下面A和B类:

public   class  A {
    
private  String start;
    
private  Date end;
    
public  Date getEnd() {
        
return  end;
    }
    
public   void  setEnd(Date end) {
        
this .end  =  end;
    }
    
public  String getStart() {
        
return  start;
    }
    
public   void  setStart(String start) {
        
this .start  =  start;
    }
    
public  String toString() {
    
return   " start =  "   +   this .start  +   " , end =  "   +  end;
    }
}
public   class  B {
    
private  Date start;
    
private  String end;
    
public  String getEnd() {
        
return  end;
    }
    
public   void  setEnd(String end) {
        
this .end  =  end;
    }
    
public  Date getStart() {
        
return  start;
    }
    
public   void  setStart(Date start) {
        
this .start  =  start;
    }
    
    
public  String toString() {
    
return   " start =  "   +   this .start  +   " , end =  "   +  end;
    }
}

     转换测试程序如下:

import  java.util.Date;

import  org.apache.commons.beanutils.BeanUtils;
import  org.apache.commons.beanutils.ConvertUtils;

public   class  MyTest {

    
public   static   void  main(String[] args)  throws  Exception {
    ConvertUtils.register(
new  DateConverter(), Date. class );
    
// 替换原来的StringConverter
    ConvertUtils.register( new  MyStringConverter(), String. class );
    A a 
=   new  A();
    a.setEnd(
new  Date());
    a.setStart(
" 2007-05-06 " );
    B b 
=   new  B();
    BeanUtils.copyProperties(b, a);
    System.out.println(b);
    }
}

这样子,输出结果为:

start = Sun May 06 00:00:00 CST 2007, end = 2007-11-28

转自:http://blog.csdn.net/myyate/article/details/1905411

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值