Java

Range

用于指定数值范围的注解。可应用于字段或方法参数,表示该数值必须在指定的最小值和最大值之间。

该注解支持两种方式指定范围: - 区间表达式:通过 value 属性指定,如 "[1,10]""(1,10]",此时忽略 min/max/minBoundary/maxBoundary。 - 显式属性:通过 min/max/minBoundary/maxBoundary 分别指定。

  • Module: core
  • Type: annotation
  • Package: com.euonia.annotation
  • Retention: RetentionPolicy.RUNTIME
  • Target: FIELD, PARAMETER
  • Author: damon(zhaorong@outlook.com)

Inheritance

  • 隐式继承 java.lang.annotation.Annotation

Annotations

Annotation Element Value Description
@Retention value RetentionPolicy.RUNTIME 保留策略为运行时
@Target value {FIELD, PARAMETER} 可用于字段和方法参数
@Validation validator RangeValidator.class 关联的验证器实现

Elements

Element Type Default Description
value() String "" 指定值范围的区间表达式,例如 "[1,10]""(1,10)""(1,10]" 等。如果指定了区间表达式则忽略 min、max、minBoundary 和 maxBoundary 属性。
min() double Double.MIN_VALUE 指定允许的最小值。
max() double Double.MAX_VALUE 指定允许的最大值。
minBoundary() Boundary EXCLUSIVE 指定最小值的边界类型。
maxBoundary() Boundary EXCLUSIVE 指定最大值的边界类型。
message() String "" 自定义验证失败时的错误消息。默认为空字符串。

Inner Types

Boundary

枚举类型,表示范围的边界类型。
  • Type: enum
Constant Description
INCLUSIVE 包含边界值
EXCLUSIVE 不包含边界值

Usage

// 方式一:区间表达式(推荐,简洁直观)
@Range("[1, 150]")        // 1 ≤ x ≤ 150(两端包含)
private int age;

@Range("(0, 100)")        // 0 < x < 100(两端不包含)
private double score;

@Range("(0, 100]")        // 0 < x ≤ 100(左开右闭)
private double amount;

// 方式二:显式属性
@Range(min = 1, max = 150, minBoundary = Boundary.INCLUSIVE, maxBoundary = Boundary.INCLUSIVE)
private int age;

// 仅指定最小值
@Range("[1,]")
private long positiveNumber;

// 仅指定最大值
@Range("[,100]")
private long maxValue;

// 自定义错误消息
@Range(value = "[18, 60]", message = "年龄必须在18到60之间")
private int adultAge;