Bean 验证应用于接口类型

Doe*_*son 1 java generics validation bean-validation

问题很短:

让我们考虑有以下类:

public class someClass implements someInterface {
    @NotNull
    String someString;

    // ... some cool logic, getters, setters, etc.
}
Run Code Online (Sandbox Code Playgroud)

还有这个界面:

public interface SomeInterface {
    // cool stuff
}
Run Code Online (Sandbox Code Playgroud)

其他地方有这个方法:

public <T extends SomeInterface> T doStuff (T someInterface) {
    Validator validator = Validation.buildDefaultValidatorFactory().getValidator();
    Set<ConstraintViolation<T>> violatons = validator.validate();
    // ...
    // ...
    // ...
    return someInterface;
}
Run Code Online (Sandbox Code Playgroud)

我对 BV 没有太多经验。SomeClass 中的 someString 是否会被验证,或者我是否需要显式地将 someInterface 转换为 SomeClass?

这里的场景被简化了。实际上,我有不同的通用类和接口,这意味着需要做一些工作。这就是为什么我要仔细询问。

希望有一位专家在附近!

提前致谢!

Gun*_*nar 5

Bean Validation 将从已验证实例的实际类型中获取约束,即您可以传递接口类型的变量,并且 Bean Validation 将考虑实现中的约束(在超类型和接口上声明的约束也适用)。