自定义注解以校验前端传来的时间格式,请用java语言编写
时间: 2024-03-14 12:45:11 浏览: 70
好的,下面是一个简单的示例代码:
首先,定义一个自定义注解 `DateValid`:
```
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface DateValid {
String message() default "日期格式不正确";
String pattern() default "yyyy-MM-dd";
}
```
然后,在需要校验时间格式的类中,使用 `@DateValid` 注解对时间字段进行标注,并编写校验逻辑:
```
import java.lang.reflect.Field;
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateValidator {
public static void validate(Object obj) throws Exception {
Class<?> clazz = obj.getClass();
Field[] fields = clazz.getDeclaredFields();
for (Field field : fields) {
if (field.isAnnotationPresent(DateValid.class)) {
field.setAccessible(true);
Object value = field.get(obj);
if (value != null) {
DateValid dateValid = field.getAnnotation(DateValid.class);
String pattern = dateValid.pattern();
SimpleDateFormat sdf = new SimpleDateFormat(pattern);
try {
sdf.parse(value.toString());
} catch (Exception e) {
throw new RuntimeException(dateValid.message());
}
}
}
}
}
}
```
最后,在测试类中创建一个对象,设置时间字段并调用 `DateValidator.validate()` 方法进行校验:
```
public class Test {
public static void main(String[] args) throws Exception {
User user = new User();
user.setName("张三");
user.setBirthDate("1990-01-01");
DateValidator.validate(user);
}
}
class User {
private String name;
@DateValid(pattern = "yyyy-MM-dd")
private String birthDate;
// 省略 getter 和 setter 方法
}
```
在上面的示例中,我们使用 `@DateValid(pattern = "yyyy-MM-dd")` 注解对 `birthDate` 字段进行了标注,并指定了时间格式为 `yyyy-MM-dd`。在调用 `DateValidator.validate()` 方法时,会根据该注解进行校验,如果时间格式不正确,会抛出 `RuntimeException` 异常,并输出错误信息。
阅读全文