code: private static CustomPropertyDescriptor tryBuildFinal(Field field,
                                                            Class<?> clazz) throws IntrospectionException {
          String name = field.getName();
          String readMethodName;
          log.debug("尝试为final类型的字段{}创建字段说明", name);
  
          if (Boolean.class.isAssignableFrom(field.getType())) {
              log.debug("字段是boolean类型");
              if (name.startsWith("is")) {
                  readMethodName = name;
              } else {
                  readMethodName = "is" + StringUtils.toFirstUpperCase(name);
              }
          } else {
              log.debug("字段不是boolean类型");
              readMethodName = "get" + StringUtils.toFirstUpperCase(name);
          }
          log.debug("猜测final类型的字段{}的read方法名为{}", name, readMethodName);
          return convert(field, new PropertyDescriptor(name, clazz, readMethodName, null), clazz);
      }
docs: 尝试为final类型的字段构建说明
  
  @param field 字段
  @param clazz 该字段所属的Class
  @return final类型字段的说明，该值不会为null，构建失败时会抛出异常
  @throws IntrospectionException 构建失败抛出异常，不会返回null