[英]java abstract class with generics and inheritance : Bound mismatch
我有2个抽象类操作泛型,还有1个带有泛型的工厂。 父级独立于旅行对象并分解代码。 儿子仅基于旅行。
//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>
{
我在Eclipse上遇到了AbstractTripBasedPurchaseExtractor第9行的错误:绑定不匹配:TRIP_PURCHASE类型不是边界参数的有效替代品
<PURCHASE extends AbstractServicePurchase<?,PRICING, RECEIPT, ITEM,COUPON>>
类型的
AbstractPurchaseExtractor<BINDING_CLASS,PURCHASE,PRICING, RECEIPT, ITEM,COUPON>
在这里:扩展AbstractPurchaseExtractor'<BINDING_CLASS, TRIP_PURCHASE ...
在子类上使用扩展,我需要为TRIP_PURCHASE使用扩展AbstractServicePurchase的东西。 实际上,AbstractTripBasedPurchase扩展了AbstractServicePurchase。 那么为什么会出错呢?
如果像Eclipse期望的那样,我用AbstractServicePurchase替换AbstractTripBasedPurchase,则当然可以编译,但是我不能在子类上使用我的旅行工厂。
同样最大程度地简化了。
有用。
public interface IGeneric<OBJECT> {
public void test(OBJECT o);
}
public abstract class Parent<OBJECT extends AbstractProduct> implements IGeneric<OBJECT> {
}
public abstract class Son<PRODUCT extends Trip> extends Parent<PRODUCT> {
IService<PRODUCT> service;
}
public abstract class AbstractProduct {
}
public class Trip extends AbstractProduct{
}
public interface IService<TRIP extends Trip> {
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.