约束继承

如果要验证的对象继承于某个父类或者实现了某个接口,那么定义在父类或者接口中的约束会在验
证这个对象的时候被自动加载,如同这些约束定义在这个对象所在的类中一样. 让我们来看看下面
的示例:

package com.mycompany;
import javax.validation.constraints.NotNull;
public class RentalCar extends Car {
private String rentalStation;
public RentalCar(String manufacturer, String rentalStation) {
super(manufacturer);
this.rentalStation = rentalStation;
}
@NotNull
public String getRentalStation() {
return rentalStation;
}
public void setRentalStation(String rentalStation) {
this.rentalStation = rentalStation;
}
}

我们有了一个新的 RentalCar 类继承自前面我们已经见到的 Car ,  这个子类中增加了一个
rentalStation属性. 如果校验一个 RentalCar 的实例对象, 那么不仅会验证属性rentalStation上
的  @NotNull 约束是否合法,还会校验父类中的manufacturer属性.
如果类 Car 是一个接口类型的话也是一样的效果.
如果类 RentalCar 重写了父类 Car 的 getManufacturer() 方法, 那么定义在父类的这个方法上的约束和
子类这个方法上定义的约束都会被校验.

04-20 10:45