public abstract class AbstractCompanyRepresentation<T extends UpdateAddressRepresentation> {
private T address;
public T getAddress() {
return address;
}
public void setAddress(T address) {
this.address = address;
}
}
public class CompanyCreateRepresentation extends AbstractCompanyRepresentation<CreateAddressRepresentation> {
}
public class UpdateAddressRepresentation {
private String street;
public String getStreet() {
return street;
}
public void setStreet(String street) {
this.street = street;
}
}
public class CreateAddressRepresentation extends UpdateAddressRepresentation {
@NotNull
@Override
public String getStreet() {
return super.getStreet();
}
}