//我使用这个简单的程序:公共静态对象convertToBean(类类型,映射){ BeanInfo beanInfo;对象obj =空;尝试{ 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.发布于 2016-12-09 03:35:32
最后我找到了根本原因。问题通过将"a01“改为”a01“来解决。变量名必须是严格的骆驼规则。第一个字符必须是小写,除了前两个字符都是大写字母,比如"AD“。因为setter和getter方法将以相同的模式生成。所以很难识别出一个变量的真名。
https://stackoverflow.com/questions/40755375
复制相似问题