当前位置:实例文章 » JAVA Web实例» [文章]java如何优雅的实现参数非空校验,快速实现参数非空校验,使用@valid实现参数非空校验

java如何优雅的实现参数非空校验,快速实现参数非空校验,使用@valid实现参数非空校验

发布人:shili8 发布时间:2025-03-04 05:07 阅读次数:0

**Java 中优雅地实现参数非空校验**

在 Java 开发中,参数非空校验是一个非常重要的步骤。它可以帮助我们避免 NullPointerException 的出现,并且提高程序的健壮性。在本文中,我们将讨论如何使用 Java8 中的 Optional 类和 Bean Validation API(@Valid)来实现参数非空校验。

### 使用 Optional 实现参数非空校验Optional 是 Java8 中的一个新类,它可以用来表示一个值可能存在或不存在。我们可以使用 Optional 来实现参数非空校验。

javapublic class User {
 private String name;
 private Integer age;

 public User(@NonNull String name, @NonNull Integer age) {
 this.name = name;
 this.age = age;
 }

 public static void main(String[] args) {
 // 正常使用 User user = new User("张三",25);
 System.out.println(user.getName()); // 张三 // 使用 Optional Optional optionalUser = Optional.of(new User("李四",30));
 optionalUser.ifPresent(u -> System.out.println(u.getName())); // 李四 }
}


在上面的例子中,我们使用了 @NonNull 注解来标记 name 和 age 这两个字段。这样可以帮助我们避免 NullPointerException 的出现。

### 使用 Bean Validation API(@Valid)实现参数非空校验Bean Validation API 是一个用于 Java 的验证框架,它提供了一系列的注解和接口来帮助我们实现参数非空校验。

javapublic class User {
 @javax.validation.constraints.NotBlank(message = "用户名不能为空")
 private String name;

 @javax.validation.constraints.NotNull(message = "年龄不能为空")
 private Integer age;

 public User(@Valid String name, @Valid Integer age) {
 this.name = name;
 this.age = age;
 }

 public static void main(String[] args) {
 // 正常使用 try {
 User user = new User("张三",25);
 System.out.println(user.getName()); // 张三 // 使用 Bean Validation API ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
 Validator validator = factory.getValidator();

 Set> violations = validator.validate(new User("", null));
 for (ConstraintViolation violation : violations) {
 System.out.println(violation.getMessage()); // 用户名不能为空, 年龄不能为空 }
 } catch (Exception e) {
 e.printStackTrace();
 }
 }
}


在上面的例子中,我们使用了 @NotBlank 和 @NotNull 注解来标记 name 和 age 这两个字段。这样可以帮助我们实现参数非空校验。

### 使用@Valid实现参数非空校验@Valid 是 Bean Validation API 中的一个注解,它可以用来标记一个对象的属性是否需要进行验证。

javapublic class User {
 @javax.validation.constraints.NotBlank(message = "用户名不能为空")
 private String name;

 @javax.validation.constraints.NotNull(message = "年龄不能为空")
 private Integer age;

 public User(@Valid String name, @Valid Integer age) {
 this.name = name;
 this.age = age;
 }

 public static void main(String[] args) {
 // 正常使用 try {
 User user = new User("张三",25);
 System.out.println(user.getName()); // 张三 // 使用 @Valid ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
 Validator validator = factory.getValidator();

 Set> violations = validator.validate(new User("", null));
 for (ConstraintViolation violation : violations) {
 System.out.println(violation.getMessage()); // 用户名不能为空, 年龄不能为空 }
 } catch (Exception e) {
 e.printStackTrace();
 }
 }
}


在上面的例子中,我们使用了 @Valid 注解来标记 name 和 age 这两个字段。这样可以帮助我们实现参数非空校验。

### 总结在本文中,我们讨论了如何使用 Java8 中的 Optional 类和 Bean Validation API(@Valid)来实现参数非空校验。通过使用这些方法,我们可以帮助避免 NullPointerException 的出现,并且提高程序的健壮性。

其他信息

其他资源

Top