为了账号安全,请及时绑定邮箱和手机立即绑定

把map转成目标实体对象时使用containKey一直是true?

把map转成目标实体对象时使用containKey一直是true?

stone猿 2017-05-09 10:17:25
/**     * 把map转成目标实体对象     *      * @param map     * @param obj     */    public static void transMap2Bean(Map<String, Object> map, Object obj, String[] str) {        try {            BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass());            PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();            for (PropertyDescriptor property : propertyDescriptors) {                String key = property.getName().toString();                for (String name : str) {                    if (name.equals(key)) {                        Object value = map.get(key);                        // 得到property对应的setter方法                        Method setter = property.getWriteMethod();                        if (value instanceof BigDecimal                                || setter.getParameterTypes()[0].toString().contains("java.math.BigDecimal")) {                            setter.invoke(obj, getBigDecimal(value));                        } else if (value instanceof Long                                || setter.getParameterTypes()[0].toString().contains("java.lang.Long")) {                            setter.invoke(obj, Long.valueOf(String.valueOf(value)));                        } else if (value instanceof Boolean                                || setter.getParameterTypes()[0].toString().contains("java.lang.Boolean")) {                            setter.invoke(obj, Boolean.valueOf(String.valueOf(value)));                        } else if (value instanceof Date                                || setter.getParameterTypes()[0].toString().contains("java.util.Date")) {                            setter.invoke(obj, DateUtil.convertStringToDate(value.toString()));                        } else if (value instanceof Integer                                || setter.getParameterTypes()[0].toString().contains("java.lang.Integer")) {                            setter.invoke(obj, Integer.valueOf(String.valueOf(value)));                        } else {                            setter.invoke(obj, value);                        }                        break;                    }                }                /*                 * if (map.containsKey(key) && !"class".equals(key)) {                 *                  * }                 */            }        } catch (Exception e) {            e.printStackTrace();            System.out.println("transMap2Bean Error " + e);        }        return;    }
查看完整描述

1 回答

已采纳
?
botao555

TA贡献48条经验 获得超46个赞

如果map.containsKey(key)都是true的话,说明obj的属性都是存在于map的keyset中的

查看完整回答
反对 回复 2017-05-09
  • stone猿
    stone猿
    map的数据是从Excel里读出来的,比obj 少几个属性值,(现在我改成equels就多了很多代码)
  • 1 回答
  • 0 关注
  • 1423 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信