Java Validator 泛型化实现

[size=medium]
1. Java 的static 方法无法访问泛型类的类型参数,所以如果static 方法需要使用泛型能力,就必须使其称为泛型方法。
[/size]

public class DomainObjectValidator {
private static final Logger LOGGER = LoggerFactory.getLogger(DomainObjectValidator.class);

public static Validator getInstance() {
ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
return factory.getValidator();
}

public static <T> boolean isDomainObjectValid(T object) {
boolean result = true;
if (object != null) {
Set<ConstraintViolation<T>> constraintViolations = getInstance().validate(object);
if (constraintViolations.size() > 0) {
result = false;
for (ConstraintViolation violation : constraintViolations) {
LOGGER.info("filed={}, msg={}, currentValue={}.",
violation.getPropertyPath().toString(),
Objects.toString(violation.getMessage()),
Objects.toString(violation.getInvalidValue())
);
}
}
}
return result;
}

public static <T> Set<ValidateMessage> validateDomainObject(T object) {
Set<ValidateMessage> validateMessageSet = new HashSet<>();
if (object != null) {
Set<ConstraintViolation<T>> constraintViolations = getInstance().validate(object);
if (constraintViolations.size() > 0) {
for (ConstraintViolation violation : constraintViolations) {
ValidateMessage message = new ValidateMessage(
violation.getPropertyPath().toString(),
Objects.toString(violation.getMessage()),
Objects.toString(violation.getInvalidValue())
);
validateMessageSet.add(message);
}
}
}
return validateMessageSet;
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值