泛型(二)封装工具类CommonUtils-把一个Map转换成指定类型的javabean对象
1、commons-beanutils的使用
commons-beanutils-1.9.3.jar 依赖 commons-logging-1.2.jar
代码1:
String className = "cn.itcast.domain.Person"; Class clazz = Class.forName(className); Object bean = clazz.newInstance(); BeanUtils.setProperty(bean, "name", "张三"); BeanUtils.setProperty(bean, "age", "20"); // age是int类型,会自动转换 BeanUtils.setProperty(bean, "xxx", "XXX"); // 没有xxx属性,也不会抛异常 String age = BeanUtils.getProperty(bean, "age");
代码2:
需求:把map中的属性直接封装到一个bean类中。map:{"username:zhangsan","password:123"}。 我们要把map的数据封装到一个javaBean中!要求map的key值于bean的属性名相同。
首先,新建一个javabean,User.java 有两个属性username,password。
public void fun1() throws Exception { Map<String, String> map = new HashMap<String, String>(); map.put("username", "zhangsan"); map.put("password", "123"); User user = new User(); BeanUtils.populate(user, map); System.out.println(user); // User [username=zhangsan, password=123] }
代码3:封装工具类(用到泛型)
public class CommonUtils {// 把一个Map转换成指定类型的javabean对象 public static <T> T tobean(Map<String, ?> map, Class<T> clazz) { try { T bean = clazz.newInstance(); BeanUtils.populate(bean, map); return bean; } catch (Exception e) { throw new RuntimeException(e); } } }
2、测试封装的工具类
package com.oy; import java.math.BigDecimal; import java.util.HashMap; import java.util.Map; /** * @author oy * @version 1.0 * @date 2019年5月7日 * @time 下午10:10:35 */ public class User { private Integer id; private String name; private Boolean status; private BigDecimal balance; private Double salary; public static void main(String[] args) { Map<String, Object> map = new HashMap<>(); map.put("id", 1); map.put("name", "张三"); map.put("status", true); map.put("balance", 1000.123456789); map.put("salary", 1000.123456789); System.out.println(CommonUtils.tobean(map, User.class)); } //getter、setter和toString方法省略 }
map的key对应的值全部写成字符串格式也是可以的:
Map<String, Object> map = new HashMap<>(); map.put("id", "1"); map.put("name", "张三"); map.put("status", "true"); map.put("balance", "1000.123456789"); map.put("salary", "1000.123456789"); // User [id=1, name=张三, status=true, balance=1000.123456789, salary=1000.123456789] System.out.println(CommonUtils.tobean(map, User.class));
posted on 2019-05-07 23:00 wenbin_ouyang 阅读(3345) 评论(0) 编辑 收藏 举报