Map集合转对象Object<T>

Map集合转对象Object

1.创建Map集合转Object工具类

	/**
	 * Map集合转Object<T>
	 * @author shx
	 * @create 2019/10/10
	 * @since 1.0.0
 	*/
	public class MapToObjectUtils {
		public static Object mapToObject(Map<String, Object> map, Class<?> clazz) { 
			Object obj = null;
		    try {
		    	if(map != null){
		    		obj = clazz.newInstance();
			        // 通过反射获取自定义类的全部字段
			        Field[] fields = obj.getClass().getDeclaredFields();
			        for (Field field : fields) {
			            // 获取字段修饰符 需要排除静态及final修饰的字段
			            int mod = field.getModifiers();
			            if (Modifier.isStatic(mod) || Modifier.isFinal(mod)) {
			                continue;
			            }
			            // 强制设置为 true 即可以对字段值进行设置 防止一些方法阻碍我们对属性进行赋值
			            field.setAccessible(true);
			            // map 中如果包含字段名称的 key 则将对应的值放入 clazz 对象对应的字段上
			            if (map.containsKey(field.getName())){
			                field.set(obj, map.get(field.getName()));
			            }
			        }
		    	}
		    } catch (Exception e) {
		        e.printStackTrace();
		    }
		    return obj;
		}
	}

2.创建实体类对象

	public class Card {
		private String code;
		private String name;
		private String note;
		public String getCode() {
			return code;
		}
		public String getName() {
			return name;
		}
		public String getNote() {
			return note;
		}
		public void setCode(String code) {
			this.code = code;
		}
		public void setName(String name) {
			this.name = name;
		}
		public void setNote(String note) {
			this.note = note;
		}
		@Override
		public String toString() {
			return "Card [code=" + code + ", name=" + name + ", note=" + note + "]";
		}
	}

3.测试

    /**
	 *测试
	 * @param args
	 */
	public static void main(String[] args) {
		Map<String,Object> map = new HashMap<String,Object>();
		map.put("code", "001");
		map.put("name", "庆余年");
		map.put("note", "庆帝");
		
		Card card = (Card) mapToObject(map,Card.class);
		System.out.println(card.toString());
	}

4.测试结果
Card [code=001, name=庆余年, note=庆帝]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值