ConvertUtilsBean.register

先看个例子:

[java]  view plain  copy
  1. class Person{  
  2.     private String name;  
  3.     private Date birthday;  
  4.     public String getName() {  
  5.         return name;  
  6.     }  
  7.     public void setName(String name) {  
  8.         this.name = name;  
  9.     }  
  10.     public Date getBirthday() {  
  11.         return birthday;  
  12.     }  
  13.     public void setBirthday(Date birthday) {  
  14.         this.birthday = birthday;  
  15.     }  
  16.     @Override  
  17.     public String toString(){  
  18.         return "name = " + this.name+" " + "birthday = " + this.birthday;  
  19.     }  
  20. }  
  21.   
  22. public static void main(String[] args) throws Exception {  
  23.             String bd = "1991-01-01";  
  24.         Person p = new Person();  
  25.         BeanUtils.setProperty(p, "name""zhangxx");  
  26.                 System.out.println(p);  
  27. }  

输出结果很明显:name = zhangxx birthday = null

 

现在我添加一个转换器,代码如下

[java]  view plain  copy
  1. class MyConverter implements Converter {  
  2.   
  3.     public Object convert(Class type, Object value) {  
  4.           return "lixx";  
  5.         }  
  6. }  
  7.   
  8. //修改下主函数代码,将转换器注册到String类型上  
  9.     public static void main(String[] args) throws Exception {  
  10.             String bd = "1991-01-01";  
  11.         Person p = new Person();  
  12.         MyConverter c = new MyConverter();  
  13.         ConvertUtils.register(c,String.class);  
  14.         BeanUtils.setProperty(p, "name""zhangxx");  
  15.         System.out.println(p);  
  16.     }  

输出结果是:name = lixx birthday = null

 

由上面的可以看出,BeanUtils.setProperty给对象属性赋的值,是转换器返回的值

如上面我为String类型注册了一个转换器,转化器返回值为lixx,那么Perspon中的所有类型为String的属性 赋的值都为lixx

因为ConvertUtils.register函数支持8种基本类型与String自动转换

所以当我们属性的类型为8种基本类型时,我们赋的值为String类型时,可以不用考虑ConvertUtils.register方法

但当属性值不是8种基本类型,而我们赋String类型,则需要重写ConvertUtils.register方法

如BeanUtils.setProperty(p, "birthday", bd);这个语句会报错,我们需要注册一个Date转换器。

ps:类型一致赋值也是成功的,像BeanUtils.setProperty(p,"birthday",new Date())是可行的

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值