利用反射将Java对象转成Map集合

利用反射将Java对象转成Map集合

将java对象封装到map集合中有两种方案:

方案一:
先把对象的属性和属性值取出来,然后将对象的属性及属性值存储到Map集合中。这种方法比较简单粗暴,但是有一个弊端就是实体的属性比较多时,代码书写起来比较繁琐,不利于阅读。

方案二:
利用反射将java实体对象转成map集合,首先获取字节码对象Class,然后获取对象的所有属性值,其次获取对象的所有属性值,最后将属性和属性值封装到map集合中。这种方案可以解决方案一实体属性多的不足,效率比方案一更高。

话不多说,直接上代码:

	//实体对象
	private String name;
	private int age;
	private int sex;
	
	setter方法和getter方法省略

	/**
	* 将java对象转成map集合
	* @param bean
	* @return
	* @throws Exception
	*/
	public static Map<String, Object> beanConvertMap(Object bean) throws Exception {
		
		Map<String, Object> dataMap = new HashMap<>();
		// 获取bean的字节码对象
		Class clazz = bean.getClass();
		// 获取对象的所有属性
		Field[] fields = clazz.getDeclaredFields();
		for (int i = 0; i < fields.length; i++) {
				// 获取对象的属性
				Field field = fields[i];
				// 打开私有访问
				field.setAccessible(true);
				// 获取对象的属性名称
				String name = field.getName();
				// 获取对象的属性值
				Object value = field.get(bean);
				// 将对象的属性和属性值封装到map集合中
				dataMap.put(name, value);
			}
			return dataMap;
	}
	/**
	* 测试方法
	* @param args
	* @throws Exception
	*/
	public static void main(String[] args) throws Exception {
		
		User user = new User();
		user.setName("zhangsan");
		user.setAge(18);
		user.setSex(1);
		// 将user对象封装到Map集合中
		Map<String, Object> convertMap = beanConvertMap(user );
		System.out.println(convertMap);
	}

由于本人第一次写博客,如有写的不好的地方忘各位大神指正,欢迎互相学习!

  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值