用Java写一个校验经纬度的注解
时间: 2023-09-22 08:15:31 浏览: 170
javascript 经纬度校验
好的,这是一个使用Java编写的校验经纬度的注解:
```java
import java.lang.annotation.*;
import java.lang.reflect.Field;
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface LatLong {
String message() default "Invalid latitude or longitude";
}
class Location {
@LatLong
private String latitude;
@LatLong
private String longitude;
public String getLatitude() {
return latitude;
}
public void setLatitude(String latitude) {
this.latitude = latitude;
}
public String getLongitude() {
return longitude;
}
public void setLongitude(String longitude) {
this.longitude = longitude;
}
}
class LatLongValidator {
public static void validate(Object obj) throws Exception {
Class<?> clazz = obj.getClass();
Field[] fields = clazz.getDeclaredFields();
for (Field field : fields) {
if (field.isAnnotationPresent(LatLong.class)) {
field.setAccessible(true);
String value = (String) field.get(obj);
if (value != null && !value.matches("^[-+]?([1-8]?\\d(\\.\\d+)?|90(\\.0+)?)|0(\\.\\d+)?,[+-]?([1-9]\\d(\\.\\d+)?|1[0-7]\\d(\\.\\d+)?|180(\\.0+)?)|0(\\.\\d+)?$")) {
throw new IllegalArgumentException("Invalid latitude or longitude");
}
}
}
}
}
```
这个注解可以被用于经度和纬度的校验。它使用正则表达式来验证经度和纬度的值是否符合标准。如果经度或纬度的值不合法,将抛出 IllegalArgumentException 异常。
你可以在需要校验经纬度的类字段上添加 @LatLong 注解,然后使用 LatLongValidator.validate(object) 方法来验证该对象的经度和纬度值是否合法。
阅读全文