今天遇到了一个坑。类里面有个属性叫pOrgNo,通过反射获取属性值时候默认将属性首字母变大写拼上get来调用方法,但是发现找不到方法。查看了下getter的名字居然是getpOrgNo,首字母是小写的!!!

201905101557498461720805.png

判断代码:

  /**

 * getter,setter属性处理

 * @param s

 * @return

 */

public static String decapitalize(String s) {

  if (s  null || s.length()  0)

     // 空处理

     return s;

  if (s.length() > 1 && Character.isUpperCase(s.charAt(1)) && Character.isUpperCase(s.charAt(0))) {

    // 长度大于1,并且前两个字符大写时,返回原字符串

      return s;

 } else if(s.length() > 1 && Character.isUpperCase(s.charAt(1)) && Character.isLowerCase(s.charAt(0))){

    // 长度大于1,并且第一个字符小写,第二个字符大写时,返回原字符串

     return s;

 }else if(Character.isLowerCase(s.charAt(0))){

    //如果首字母大写,返回原字符

    return s;

 }else {

   // 其他情况下,把原字符串的首个字符大写处理后返回

   char ac[] = s.toCharArray();

    ac[0] = Character.toUpperCase(ac[0]);

    return new String(ac);

 }

}