docs: public void addClass(Class<?> klass) throws Exception {
          // 只读取public的属性
          for (Field field : klass.getFields()) {
              // 只读取PROP_开头的属性
              if (!field.getName().startsWith("PROP_"))
                  continue;
              // 不带@ProcDoc? 跳过
              PropDoc prop = field.getAnnotation(PropDoc.class);
              if (prop == null)
                  continue;
              // 如果不设置key,那就取字段的值,通常也是这样
              String key = Strings.isBlank(prop.key()) ? (String) field.get(null) : prop.key();
  
              // 如果对于的key不存在,那就新建一个PropDocBean,否则就取老的
              PropDocBean doc = new PropDocBean();
              doc.key = key;
              doc.defaultValue = prop.defaultValue();
              doc.value = prop.value();
              doc.group = Strings.isBlank(prop.group()) ? doc.key.substring(0, doc.key.indexOf('.')) : prop.group();
              doc.need = prop.need();
              doc.possible = prop.possible();
              doc.users = new ArrayList<>();
              add(klass.getName(), key, doc);
          }
      }