java map转对象_JAVA-工具-Map和对象互转

不啰嗦,直接上代码

/** * map与bean互转 */public class BeanConvertUtils { /** * 将javaBean转换成Map * * @param javaBean javaBean * @return Map对象 */ public static Map beanToMap(Object javaBean, boolean includeNull) { Map result = new HashMap<>(); Method[] methods = javaBean.getClass().getDeclaredMethods(); for (Method method : methods) { try { if (method.getName().startsWith("get")) { String field = method.getName(); field = field.substring(field.indexOf("get") + 3); field = field.toLowerCase().charAt(0) + field.substring(1); Object value = method.invoke(javaBean, (Object[]) null); if(value instanceof List){ List vList = (List) value; List> newList = new LinkedList<>(); for(int i=0;i beanToMap(Object javaBean) { return beanToMap(javaBean, false); } /** * 将map转换成Javabean * * @param clazz javaBean * @param iclazz javaBean item * @param data map数据 */   public static Object map2Bean(Class clazz,Class iclazz, Map data) { Object bean = null; try { Method[] methods = clazz.getMethods(); bean = clazz.newInstance(); for (Method method : methods) { try { if (method.getName().startsWith("set") && method.getParameterTypes().length == 1) { String field = method.getName(); field = field.substring(field.indexOf("set") + 3); field = field.toLowerCase().charAt(0) + field.substring(1); if(data.containsKey(field) && data.get(field) != null){ Class paramType = method.getParameterTypes()[0]; if(paramType == Integer.class || paramType == int.class){ method.invoke(bean, new Object[]{Integer.valueOf(data.get(field).toString())}); }else if(paramType == Boolean.class || paramType == boolean.class){ method.invoke(bean, new Object[]{Boolean.valueOf(data.get(field).toString())}); }else if(paramType == Byte.class || paramType == byte.class){ method.invoke(bean, new Object[]{Byte.valueOf(data.get(field).toString())}); }else if(paramType == Short.class || paramType == short.class){ method.invoke(bean, new Object[]{Short.valueOf(data.get(field).toString())}); }else if(paramType == Character.class || paramType == char.class){ method.invoke(bean, new Object[]{Character.valueOf(data.get(field).toString().charAt(0))}); }else if(paramType == Long.class || paramType == long.class){ method.invoke(bean, new Object[]{Long.valueOf(data.get(field).toString())}); }else if(paramType == Float.class || paramType == float.class){ method.invoke(bean, new Object[]{Float.valueOf(data.get(field).toString())}); }else if(paramType == Double.class || paramType == double.class){ method.invoke(bean, new Object[]{Double.valueOf(data.get(field).toString())}); }else if(paramType == List.class){ if(iclazz!=null){ List _list = (List) data.get(field); List list = new LinkedList<>(); for(int i=0;i<_list.size list.add object>) _list.get(i))); } method.invoke(bean,list); } }else { method.invoke(bean, new Object[]{data.get(field)}); } } } }catch (IllegalArgumentException e){ e.printStackTrace(); } } } catch (Exception e) { e.printStackTrace(); } return bean; }}
24ff8c6bd11953915c655def3a83ec71.png

转化工具类,主要使用了java高级特性反射机制,请大家关注,下节分享《java-特性-反射》

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值