猿问

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

/**
     * 把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;

    }

stone猿
浏览 1424回答 1
1回答

botao555

如果map.containsKey(key)都是true的话,说明obj的属性都是存在于map的keyset中的
随时随地看视频慕课网APP

相关分类

Java
我要回答