Я пытаюсь использовать абстрактный класс и сделать все его расширения, чтобы передать подкласс в метод и вернуть его.Это лучше объяснить только с помощью кода.
public abstract class AbstractRequestReBuilder {
@Autowired
private CreditCardUpdateProcessor creditCardUpdateProcessor;
abstract BookingRequest rebuildRequest(BookingRequest request);
public BillingDetails updateCard(BillingDetails billingDetails) {
return creditCardUpdateProcessor.updateCreditCardInBillingDetails(billingDetails);
}
}
@Component
public class HotelRequestReBuilder extends AbstractRequestReBuilder {
public HotelBookingRequest rebuildRequest(HotelBookingRequest request) {
BillingDetails billingDetails = request.getBillingDetails();
BillingDetails modifiedBillingDetails = updateCard(billingDetails);
request.setBillingDetails(modifiedBillingDetails);
return request;
}
}
где
public class HotelBookingRequest extends BookingRequest<RoomDetail> implements Serializable {
}
В настоящее время я получаю сообщение об ошибке компилятора о том, что rebuildRequest
не реализовано в HotelRequestReBuilder
.Может кто-нибудь, пожалуйста, проверьте и дайте мне знать, как это исправить.