Dictionary 将映射转换为JavaBean时,某些属性无法正确设置

Dictionary 将映射转换为JavaBean时,某些属性无法正确设置,dictionary,javabeans,propertydescriptor,Dictionary,Javabeans,Propertydescriptor,//我使用这个简单的程序: 公共静态对象convertToBean(类类型,映射){ BeanInfo BeanInfo; objectobj=null; 试一试{ beanInfo=内省者。getBeanInfo(类型); obj=type.newInstance() 最后我找到了根本原因。 通过将“A01”更改为“A01”,问题得以解决。 变量名必须是严格的驼峰规则。第一个字符必须是小写,除了前两个字符都是大写,如“AD”。 因为setter和getter方法将以相同的模式生成。因此很难识别

//我使用这个简单的程序: 公共静态对象convertToBean(类类型,映射){ BeanInfo BeanInfo; objectobj=null; 试一试{ beanInfo=内省者。getBeanInfo(类型); obj=type.newInstance()


最后我找到了根本原因。 通过将“A01”更改为“A01”,问题得以解决。 变量名必须是严格的驼峰规则。第一个字符必须是小写,除了前两个字符都是大写,如“AD”。
因为setter和getter方法将以相同的模式生成。因此很难识别一个变量的真实名称。

例如,我想将Map转换为Bean,Map中的数据:A01->0.01;A02->0.02;AD->“12345678”JavaBean定义:private Double A01;private Double A02;private String AD;Setters和getter。这样就可以正确设置AD,但A01和A02将为null。
            // 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.