ConvertUtilsBean.register ゝ一世哀愁。 2022-06-12 08:57 210阅读 0赞 先看个例子: **\[java\]** [view plain][] [copy][view plain] 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][view plain] 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())是可行的 [view plain]: http://blog.csdn.net/msl0903/article/details/7706852#
还没有评论,来说两句吧...