如何使用注解来限制方法参数为List类型,其中元素必须是String?
时间: 2024-11-22 22:43:49 浏览: 5
在Java中,可以使用JSR 303/JSR 349(现在称为Hibernate Validator)提供的@NotNull、@Size等注解来限制方法参数。对于列表类型的参数,通常需要配合`@Validated`或自定义校验注解来确保每个元素都是字符串。这里是一个例子:
```java
import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
import java.util.List;
// 自定义注解
@Target({ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = ListOfStringsValidator.class)
public @interface ListOfStrings {
String message() default "Invalid list of strings";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
// 具体验证逻辑可以在这里实现
}
// 验证器类
public class ListOfStringsValidator implements ConstraintValidator<ListOfStrings, List<String>> {
private boolean isValid;
@Override
public void initialize(ListOfStrings constraintAnnotation) {
// 初始化
}
@Override
public boolean isValid(List<String> values, ConstraintValidatorContext context) {
if (values != null) {
for (String value : values) {
if (value == null || !value.isEmpty()) {
isValid = false;
break;
}
}
} else {
isValid = false;
}
return isValid;
}
}
// 使用注解
public class YourClass {
public void yourMethod(@ListOfStrings List<String> stringList) {
// ...
}
}
```
阅读全文