🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[TOC] # 简介 把对象的属性数据封装到对象中。 在整个J2EE的编程过程中,我们经常会从各种配置文件中读取相应的数据,从配置文件中读取到的数据都是String,但是很应用程序中不仅有String一种,比如:基本数据类型,还有自定义数据类型,那面临的一个问题是字符串类型转换为各种数据类型 # 常用方法 * `BeanUtils.setProperty(bean, name, value);`其中bean是指你将要设置的对象,name指的是将要设置的属性(写成”属性名”),value(从配置文件中读取到到的字符串值) * `BeanUtils.copyProperties(bean, name, value)`,和上面的方法是完全一样的。使用哪个都可以 * `ConvertUtils.register(Converter converter , ..)`,当需要将String数据转换成引用数据类型(自定义数据类型时),需要使用此方法实现转换。 * `BeanUtils.populate(bean,Map)`,其中Map中的key必须与目标对象中的属性名相同,否则不能实现拷贝。 * `BeanUtils.copyProperties(newObject,oldObject)`,实现对象的拷贝 **自定义数据类型使用BeanUtils工具时必须具备的条件** 本身必须具备getter和setter方法,因为BeanUtils工具本身也是一种内省的实现方法,所以也是借助于底层的getter和setter方法进行转换的。 **谨慎使用这个copyproperties这个功能,相同的属性都会被替换,不管是否有值** # 例子 ~~~ String id = "110"; String name = "xjd"; User user = new User(); BeanUtils.setProperty(user, "id", id); BeanUtils.setProperty(user, "name", name); System.out.println(user); String i = BeanUtils.getProperty(user, "id"); System.out.println(i); User user1 = new User(); HashMap<String, String> hashMap = new HashMap<>(); hashMap.put("id", "1"); hashMap.put("name", "x"); BeanUtils.populate(user1, hashMap); System.out.println(user1); ~~~ # ConvertUtils ~~~ public class TestConvertUtil extends org.apache.commons.beanutils.ConvertUtils { //将object转化成int型 public static int intConvert(Object object){ String str = object==null?null:object.toString(); Object obj = org.apache.commons.beanutils.ConvertUtils.convert(str, Integer.class); Integer i= (Integer)obj; return i; } //将任意的Object转换成string public static String stringConvert(Object object){ Object obj = org.apache.commons.beanutils.ConvertUtils.convert(object); String string = (String) obj; return string; } public static boolean booleanConvert(Object object){ String str = object == null?null:object.toString(); Object obj = org.apache.commons.beanutils.ConvertUtils.convert(str, Boolean.class); boolean b =(Boolean)obj; return b; } public static void main(String[] arg) { System.out.println(intConvert("123")); System.out.println(stringConvert(456.2)); System.out.println(booleanConvert("true")); } } ~~~