Map轉實體類
阿新 • • 發佈:2019-01-28
public static Object map2Object(Map<String, Object> map, Class<?> beanClass) throws ServiceException { if (map == null) { return null; } try { Object obj = beanClass.newInstance(); BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass()); PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();for (PropertyDescriptor property : propertyDescriptors) { Method setter = property.getWriteMethod(); if (setter != null) { Object temp = map.get(property.getName().toLowerCase()); if (temp != null) { if (property.getPropertyType().getName().equals(Date.class.getName())) { setter.invoke(obj, DateUtil.StringToDate(temp.toString(), DateUtil.DateStyle.YYYY_MM_DD)); } else if (property.getPropertyType().getName().equals(Integer.class.getName())) { setter.invoke(obj, Verify.IsNullOrEmpty(temp.toString())?null: Integer.parseInt(temp.toString())); } else if (property.getPropertyType().getName().equals(Double.class.getName())) { setter.invoke(obj, Double.parseDouble(temp.toString())); } else if (property.getPropertyType().getName().equals(Float.class.getName())) { setter.invoke(obj, Float.parseFloat(temp.toString())); } else if (property.getPropertyType().getName().equals(Long.class.getName())) { setter.invoke(obj, Long.parseLong(temp.toString())); } else if (property.getPropertyType().getName().equals(BigDecimal.class.getName())) { setter.invoke(obj, new BigDecimal(temp.toString())); } else if (property.getPropertyType().getName().equals(Short.class.getName())) { setter.invoke(obj, Short.parseShort(temp.toString())); } else { setter.invoke(obj, temp); } } } } return obj; } catch (Exception e) { throw new ServiceException("引數錯誤"); } }