java中把map类型转换成指定类型

首先创建一个user类,用于封装数据.

package cn.itcast.test;

public class User {
	private String loginname;			//登录名
	private String loginpass;			//登录密码
	private String age;
	private String birthday;
	
	public String getBirthday() {
		return birthday;
	}
	public void setBirthday(String birthday) {
		this.birthday = birthday;
	}
	public String getAge() {
		return age;
	}
	public void setAge(String age) {
		this.age = age;
	}
	public String getLoginname() {
		return loginname;
	}
	public void setLoginname(String loginname) {
		this.loginname = loginname;
	}
	public String getLoginpass() {
		return loginpass;
	}
	public void setLoginpass(String loginpass) {
		this.loginpass = loginpass;
	}
	@Override
	public String toString() {
		return "User [loginname=" + loginname + ", loginpass=" + loginpass
				+ ", age=" + age + ", birthday=" + birthday + "]";
	}
}

创建CommonUtils类.使用ConvertUtils类,这个类有个register方法是用来注册的.



package cn.itcast.test;

import java.util.Map;
import java.util.UUID;

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

/**
 * 小小工具
 * @author Admin
 *
 */
public class CommonUtils {
	/**
	 * 返回一个不重复的字符串
	 */
	public static String uuid(){
		return UUID.randomUUID().toString().replace("-", "").toUpperCase();
	}
	
	/**
	 * 把map类型转换成指定类型
	 * @param map
	 * @param clazz
	 * @return
	 */
	@SuppressWarnings("rawtypes")
	public static <T> T toBean(Map map, Class<T> clazz){
		try {
			/*
			 * 1.通过参数clazz创建实例
			 * 2.使用beanUtils.populate把map的数据封装到bean中
			 */
			T bean = clazz.newInstance();
			ConvertUtils.register(new DateConverter(), java.util.Date.class);
			return bean;
		} catch (Exception e) {
			throw new RuntimeException(e);
		}
	}
}

为了实现register方法  register(new DateConverter,java.util.Date.class),需要写一个类,DateConverter.

package cn.itcast.test;

import java.text.ParseException;
import java.text.SimpleDateFormat;

import org.apache.commons.beanutils.Converter;

public class DateConverter implements Converter{

	@Override
	public Object convert(Class type, Object value) {
		if (value == null) return null;		//如果要转换成值为null,那么直接返回null
		if (!(value instanceof String)) {	//如果要转换的值不是String,那么就不转换了,直接返回
			return value;
		}
		String val = (String) value;		//把值转换成String
		
		//使用simpledateformat进行转换
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		try {
			return sdf.parse(val);
		} catch (ParseException e) {
			throw new RuntimeException(e);
		}
	}

}

然后写demo测试类,用来测试把 map类型转换成指定类型.

package cn.itcast.test;

import java.util.HashMap;
import java.util.Map;

import org.apache.commons.beanutils.ConvertUtils;
import org.apache.commons.beanutils.Converter;
import org.junit.Test;

import cn.itcast.commons.CommonUtils;

public class demo {
	/**
	 * 写一个Map,Map中的String要封装到User的age中
	 * BeanUtils可以把String转换成int
	 */
	@Test
	public void fun1(){
		Map<String,String> map = new HashMap<String,String>();
		
		map.put("loginname", "张三");
		map.put("loginpass", "123");
		map.put("age", "55");
		
		User user = CommonUtils.toBean(map, User.class);
		System.out.println(user);
	}
	
	@Test
	public void fun2(){
		Map<String,String> map = new HashMap<String,String>();
		
		map.put("loginname", "张三");
		map.put("loginpass", "123");
		map.put("age", "55");
		map.put("birthday", "2013-01-29");
		
		User user = CommonUtils.toBean(map, User.class);
		System.out.println(user);
	}
	
}

控制台输出.


猜你喜欢

转载自blog.csdn.net/superman___007/article/details/80709830