Преобразование Map в Java Bean, некоторые свойства не могут быть установлены правильно

// Я использую эту простую программу: public static Object convertToBean(Тип класса, Карта карты) { BeanInfo beanInfo; Объект obj = null; try { beanInfo = Introspector.getBeanInfo(type); obj = type.newInstance();

            // When I debugging to here, I found that some properties is different from the variable the Object own. PropertyDescriptor changes charactor case when the variable is not in "String" type.
            PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
            for (PropertyDescriptor descriptor : propertyDescriptors) {
                String propertyName = descriptor.getName();

                if (map.containsKey(propertyName)) {
                    Object value = map.get(propertyName);
                    Object[] args = new Object[1];
                    args[0] = value;
                    descriptor.getWriteMethod().invoke(obj, args);
                }
            }
        } catch (Exception ignored) {
        }
        return obj;
    }

//Using BeanMap is the same question.

1 ответ

Решение

Наконец я нашел основную причину. Проблема решена изменением "А01" на "А01". Имя переменной должно быть строгим правилом верблюда. Первый символ должен быть в нижнем регистре, за исключением того, что первые два символа все в верхнем регистре, как "AD". Потому что методы setter и getter будут генерироваться по одному шаблону. поэтому будет трудно распознать настоящее имя одной переменной.

Другие вопросы по тегам