首页

定义DTOUtils工具类实现将指定class类属性名称对应值Map转为对象代码示例

标签:DTOUtils,dto工具类,map转对象     发布时间:2018-11-19   

一、前言

定义DTOUtils传值对象工具类,对dto类的属性名称对应值得Map转为目标对象(Map转对象)处理示例,详情参见代码示例。

二、代码示例

import java.lang.reflect.Constructor;@b@import java.lang.reflect.Field;@b@import java.util.HashMap;@b@import java.util.Map;@b@@b@public class DTOUtils {@b@	@b@	/**@b@	 * 将class的属性值Map实例化目标对象@b@	 * @param <T>@b@	 * @param params@b@	 * @param classz@b@	 * @return@b@	 * @throws Exception@b@	 */@b@	public static <T> T bulidFromMap(Map<String, Object> params, Class<?> classz) throws Exception {@b@		Constructor constructor = classz.getConstructor(new Class[0]);@b@		Object targetObj = constructor.newInstance(new Object[0]);@b@@b@		Field[] fields = classz.getDeclaredFields();@b@		Field[] arr$ = fields;@b@		int len$ = arr$.length;@b@		for (int i$ = 0; i$ < len$; ++i$) {@b@			Field field = arr$[i$];@b@			String name = field.getName();@b@			Object paramValue = params.get(name);@b@			if (paramValue != null) {@b@				field.setAccessible(true);@b@				field.set(targetObj, paramValue);@b@			}@b@		}@b@		return (T) targetObj;@b@	}@b@@b@	public static class ClassDTO {@b@		@b@		private String no;@b@		private String cName;@b@@b@		public String getNo() {@b@			return no;@b@		}@b@@b@		public void setNo(String no) {@b@			this.no = no;@b@		}@b@@b@		public String getcName() {@b@			return cName;@b@		}@b@@b@		public void setcName(String cName) {@b@			this.cName = cName;@b@		}@b@@b@		@Override@b@		public String toString() {@b@			return this.getClass().getName()+"@【no="+no+";cName="+cName+";hashCode="+this.hashCode()+"】";@b@		}@b@		@b@	}@b@@b@	public static void main(String[] args) throws Exception {@b@		@b@		Map<String,Object> fieldVals=new HashMap<String,Object>();@b@		fieldVals.put("no", "601");@b@		fieldVals.put("cName","六年级一班");@b@		@b@		System.out.println(bulidFromMap(fieldVals,ClassDTO.class));;@b@@b@	}@b@}

控制台输出结果

dto.DTOUtils$ClassDTO@【no=601;cName=六年级一班;hashCode=21174459】
@b@