自定义注解
@Target(value = ElementType.FIELD) @Documented @Retention(value = RetentionPolicy.RUNTIME) public @interface NumberCheck { long minValue() default 0; long maxValue() default Integer.MAX_VALUE; boolean allowedNull() default false; }
目标类 需要校验的加上注解
@Data public class Order { private String orderNo; @NumberCheck(maxValue = 1000) private Long piece; @NumberCheck(maxValue = 1000) public Long number; }
校验方法 利用反射
getFields() | 获取所有public字段,包括父类字段 |
getDeclaredFields() | 获取所有字段,public和protected和private,但是不包括父类字段 |
public class validateUtil { public static List<Field> getAllDeclaredFields(Class<?> clazz){ List<Field> list = new ArrayList(Arrays.asList(clazz.getDeclaredFields())); while (clazz.getSuperclass() != Object.cla