今天遇到了一个坑。类里面有个属性叫pOrgNo,通过反射获取属性值时候默认将属性首字母变大写拼上get来调用方法,但是发现找不到方法。查看了下getter的名字居然是getpOrgNo,首字母是小写的!!!
判断代码:
/**\r\n * getter,setter属性处理\r\n * @param s\r\n * @return\r\n */\r\npublic static String decapitalize(String s) {\r\n if (s == null || s.length() == 0)\r\n // 空处理\r\n return s;\r\n if (s.length() > 1 && Character.isUpperCase(s.charAt(1)) && Character.isUpperCase(s.charAt(0))) {\r\n // 长度大于1,并且前两个字符大写时,返回原字符串\r\n return s;\r\n } else if(s.length() > 1 && Character.isUpperCase(s.charAt(1)) && Character.isLowerCase(s.charAt(0))){\r\n // 长度大于1,并且第一个字符小写,第二个字符大写时,返回原字符串\r\n return s;\r\n }else if(Character.isLowerCase(s.charAt(0))){\r\n //如果首字母大写,返回原字符\r\n return s;\r\n }else {\r\n // 其他情况下,把原字符串的首个字符大写处理后返回\r\n char ac[] = s.toCharArray();\r\n ac[0] = Character.toUpperCase(ac[0]);\r\n return new String(ac);\r\n }\r\n}
参考文章: