package ch5;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.util.HashMap;
import java.util.Map;
import net.sf.cglib.beans.BeanGenerator;
import net.sf.cglib.core.NamingPolicy;
import net.sf.cglib.core.Predicate;
/**
* CGLB
* Map转javaBean
*/
import org.apache.commons.beanutils.BeanUtils;
/**
* Map转JavaBean
* @author szw
*
*/
public class MapToObject {
public static Object mapToObject(Map<String,Object> map) throws IllegalAccessException, InvocationTargetException{
BeanGenerator bg = new BeanGenerator();
bg.setNamingPolicy(new NamingPolicy() {
@Override
public String getClassName(String arg0, String arg1, Object arg2,
Predicate arg3) {
return "mytest";
}
});
//设置他的父类
bg.setSuperclass(Object.class);
//设置字段
for(Map.Entry<String, Object> en:map.entrySet()){
bg.addProperty(en.getKey(), en.getValue().getClass());
}
//设置字段值
Object obj = bg.create();
for(Map.Entry<String, Object> en:map.entrySet()){
BeanUtils.setProperty(obj, en.getKey(), en.getValue());
}
return obj;
}
public static void main(String[] args) throws IllegalAccessException, InvocationTargetException {
MapToObject mtj = new MapToObject();
Map<String,Object> map = new HashMap<String,Object>();
map.put("1", new User("root","123"));
// map.put("2", new User("admin","456"));
System.out.println(mtj.mapToObject(map));
Object obj = mtj.mapToObject(map);
System.out.println(obj.getClass());
Class clazz = obj.getClass();
Field[] fis = clazz.getDeclaredFields();
for(Field f:fis){
System.out.println(f);
}
}
}
Map与javaBean的转换
最新推荐文章于 2024-03-15 10:39:36 发布