BeanUtils大小寫問題

在使用BeanUtils為對象的屬性賦值時發現像aInteger這種命名的屬性有問題,看了一下代碼發現BeanUtils是基於get、set函數來進行取值、賦值的,對象的屬性名稱是通過截取get、set函數名得到的,具體如下:

if (returnType.equals(boolean.class) && isPrefix(name, "is")) {

PropertyInfo info = getInfo(map, name.substring(2), false);

info.read = new MethodInfo(method, boolean.class);

} else if (!returnType.equals(void.class) && isPrefix(name, "get")) {

PropertyInfo info = getInfo(map, name.substring(3), false);

info.readList = add(info.readList, method, method.getGenericReturnType());

}

當使用aInteger這種命名時對應的get、set函數名為:

public Integer getAInteger(){return aInteger;}

public void setAInteger(Integer value){aInteger = value;}

那麼BeanUtils記錄的屬性名就是AInteger,所以使用aInteger進行賦值當然就不生效了,需要用AInteger進行賦值才能正常工作,如:

BeanUtils.setProperty(bean, "AInteger", 123); // 可以正常賦值



分享到:


相關文章: