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 的出现,并且提高程序的健壮性。

