自定义注解实现List<Sting>的正则表达式验证
时间: 2023-12-06 11:02:46 浏览: 81
STING(a STatisticalINformationGrid approach)
4星 · 用户满意度95%
可以通过自定义注解来实现List<String>的正则表达式验证。下面是一个简单的示例:
```java
import java.lang.annotation.*;
import java.util.List;
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface RegexList {
String value();
}
public class RegexValidation {
public static boolean validate(Object obj) throws IllegalAccessException {
for (Field field : obj.getClass().getDeclaredFields()) {
if (field.isAnnotationPresent(RegexList.class)) {
field.setAccessible(true);
Object fieldValue = field.get(obj);
if (fieldValue instanceof List) {
List<String> list = (List<String>) fieldValue;
String regex = field.getAnnotation(RegexList.class).value();
for (String str : list) {
if (!str.matches(regex)) {
return false;
}
}
}
}
}
return true;
}
}
```
在上述示例中,我们首先定义了一个注解 `@RegexList`,用于标记需要进行正则表达式验证的List<String>类型的字段。该注解包含一个属性 `value`,用于指定正则表达式。在 `RegexValidation` 类中,我们通过反射获取到对象的所有字段,如果字段被 `@RegexList` 注解标记,则进行正则表达式验证。
使用时,我们只需要在需要进行List<String>类型字段的正则表达式验证的类中,使用 `@RegexList` 注解标记该字段,例如:
```java
public class MyClass {
@RegexList("\\d+")
private List<String> list;
}
```
在需要进行验证的时候,只需要调用 `validate` 方法,并传入需要验证的对象即可,例如:
```java
MyClass obj = new MyClass();
obj.list = Arrays.asList("123", "456", "789");
boolean isValid = RegexValidation.validate(obj);
System.out.println(isValid); // 输出:true,因为所有的字符串都是数字
```
希望这个示例可以帮助您解决问题。如果您还有其他问题,请随时问我。
阅读全文