code: private PropDesc createProp(Field field) {
  		final String fieldName = field.getName();
  		final Class<?> fieldType = field.getType();
  		final boolean isBooeanField = BooleanUtil.isBoolean(fieldType);
  
  		Method getter = null;
  		Method setter = null;
  
  		String methodName;
  		Class<?>[] parameterTypes;
  		for (Method method : ReflectUtil.getMethods(this.beanClass)) {
  			parameterTypes = method.getParameterTypes();
  			if (parameterTypes.length > 1) {
  				// 多于1个参数说明非Getter或Setter
  				continue;
  			}
  
  			methodName = method.getName();
  			if (parameterTypes.length == 0) {
  				// 无参数，可能为Getter方法
  				if (isMatchGetter(methodName, fieldName, isBooeanField)) {
  					// 方法名与字段名匹配，则为Getter方法
  					getter = method;
  				}
  			} else if (isMatchSetter(methodName, fieldName, isBooeanField)) {
  				// 只有一个参数的情况下方法名与字段名对应匹配，则为Setter方法
  				setter = method;
  			}
  			if (null != getter && null != setter) {
  				// 如果Getter和Setter方法都找到了，不再继续寻找
  				break;
  			}
  		}
  		return new PropDesc(field, getter, setter);
  	}
docs: 根据字段创建属性描述<br>
  查找Getter和Setter方法时会：
  
  <pre>
  1. 忽略字段和方法名的大小写
  2. Getter查找getXXX、isXXX、getIsXXX
  3. Setter查找setXXX、setIsXXX
  4. Setter忽略参数值与字段值不匹配的情况，因此有多个参数类型的重载时，会调用首次匹配的
  </pre>
  
  @param field 字段
  @return {@link PropDesc}
  @since 4.0.2