i have 2 abstract classes manipulating generics and 1 factory with generics too. The parent is independent of trips objects and factorize code. The son is based on trips only.
//parent
public abstract class AbstractPurchaseExtractor<//
BINDING_CLASS extends ForPnrHandling, //
PURCHASE extends AbstractServicePurchase<?, PRICING, RECEIPT, ITEM, COUPON>, //
PRICING extends PricingDefault, //
RECEIPT extends ReceiptDefault, //
ITEM extends AbstractServiceItem<PURCHASE, COUPON>, //
COUPON extends CouponDefault> //
implements IPurchaseExtractor<BINDING_CLASS, PURCHASE, PRICING, RECEIPT, ITEM, COUPON>
...
//son
public abstract class AbstractTripBasedPurchaseExtractor<//
BINDING_CLASS extends ForPnrHandling, //
TRIP_PURCHASE extends AbstractTripBasedPurchase<?, PRICING, RECEIPT, TRIP_BASED_ITEM, TRIP_BASED_COUPON> , //
PRICING extends PricingDefault, //
RECEIPT extends ReceiptDefault, //
TRIP_BASED_ITEM extends AbstractTripBasedItem<TRIP_PURCHASE, TRIP_BASED_COUPON, ?>, //
TRIP_BASED_COUPON extends TripBasedCouponDefault> //
extends AbstractPurchaseExtractor<BINDING_CLASS, TRIP_PURCHASE, PRICING, RECEIPT, TRIP_BASED_ITEM, TRIP_BASED_COUPON> //
{
@Autowired
private AbstractTripBasedPurchaseFactory<TRIP_PURCHASE, PRICING, RECEIPT, TRIP_BASED_ITEM, TRIP_BASED_COUPON> abstractTripBasedPurchaseFactory;
...
//factory
public abstract class AbstractTripBasedPurchaseFactory<PURCHASE extends AbstractTripBasedPurchase<?, PRICING, RECEIPT, ITEM, COUPON>,
PRICING extends PricingDefault,
RECEIPT extends ReceiptDefault,
ITEM extends AbstractTripBasedItem<? extends AbstractTripBasedPurchase<?, PRICING, RECEIPT, ITEM, COUPON>, COUPON, ?>,
COUPON extends TripBasedCouponDefault>
extends AbstractPurchaseFactory<PURCHASE, PRICING, RECEIPT, ITEM>
{
i have the error on Eclipse for AbstractTripBasedPurchaseExtractor line 9 : Bound mismatch: The type TRIP_PURCHASE is not a valid substitute for the bounded parameter
<PURCHASE extends AbstractServicePurchase<?,PRICING, RECEIPT, ITEM,COUPON>>
of the type
AbstractPurchaseExtractor<BINDING_CLASS,PURCHASE,PRICING, RECEIPT, ITEM,COUPON>
HERE: extends AbstractPurchaseExtractor '< BINDING_CLASS, TRIP_PURCHASE ...
using extends on the son class, i need to use for TRIP_PURCHASE something that extends AbstractServicePurchase. Actually AbstractTripBasedPurchase extends AbstractServicePurchase. So why the error ?
if i replace AbstractTripBasedPurchase by AbstractServicePurchase as Eclipse is expecting, of course it compiles but i cannot use my trip factory on the son class.
?
) in there is maybe not so great. Does it help if you replace with it with a type placeholder? – Thilo