下面是java.beans.Introspector中的一段代码,这段代码导致:当一个变量为aBcd时,用PropertyUtils.getProperty的方法将找不到这个属性,会报Error:java.lang.NoSuchMethodException: Unknown property 'aBcd' on class.
/**
* Utility method to take a string and convert it to normal Java variable
* name capitalization. This normally means converting the first
* character from upper case to lower case, but in the (unusual) special
* case when there is more than one character and both the first and
* second characters are upper case, we leave it alone.
*
* Thus "FooBah" becomes "fooBah" and "X" becomes "x", but "URL" stays
* as "URL".
*
* @param name The string to be decapitalized.
* @return The decapitalized version of the string.
*/
public static String decapitalize(String name) {
if (name == null || name.length() == 0) {
return name;
}
if (name.length() > 1 && Character.isUpperCase(name.charAt(1)) &&
Character.isUpperCase(name.charAt(0))){
return name;
}
char chars[] = name.toCharArray();
chars[0] = Character.toLowerCase(chars[0]);
return new String(chars);
}
很多开源框架中取属性值都用到了上面这个类,当使用类似命名时都会出错,所以:请不要使用第二个字母大写的字符串作变量名.