当前位置: 首页 > 知识库问答 >
问题:

具有泛型和继承的Java抽象类:绑定不匹配

沈旻
2023-03-14

我有2个抽象的类操纵泛型和一个工厂与泛型。父级独立于trips对象和因式分解代码。儿子只基于trips。

//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行出现错误:Bound mismatch:类型TRIP_PURCHASE不是bounded参数的有效替代品

<PURCHASE extends AbstractServicePurchase<?,PRICING, RECEIPT, ITEM,COUPON>> 

类型的

AbstractPurchaseExtractor<BINDING_CLASS,PURCHASE,PRICING, RECEIPT, ITEM,COUPON>

此处:extends AbstractPurchaseExtractor“

在son类上使用extends,我需要为TRIP_PURCHASE使用扩展abstractServicePurchase的东西。实际上AbstractTripBasedPurchase扩展了AbstractServicePurchase。那为什么会出错呢?

如果我像Eclipse所期望的那样用AbstractServicePurchase替换AbstractTripBasedPurchie,它当然会编译,但我不能在son类上使用我的trip工厂。

共有1个答案

段劲
2023-03-14

最大限度地简化了同样的程序。

它起作用了。

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> { 
}
 类似资料:
  • 问题内容: 我正在使用具有继承性的流畅接口。我声明基类Constructor受保护,因此您不能创建Foo ,这会导致在调用add()时引发ClassCastException。但是我在返回一个新的Foo实例的静态方法上遇到了麻烦。 这主要是流利的接口,特定领域的语言和泛型方面的一项练习(个人而非家庭作业),所以请不要问我需要什么。 编辑:Eclipse错误 问题答案: 本质上,您有一个递归类型声明

  • 想象一下,我有一个抽象类动物的方法: 然后我有一个类,用以下内容扩展这个抽象类: 我希望每个扩展Animal的类都有一个fetch()方法。然而,fetch方法为相关动物指定了一些独特的特征(狗的爪子、猫的爪子等)。例如,cat的fetch()将获取参数fetch(fellinecat kitty)并表示: 因此,抓取方法接受了扩展抽象类“动物”(因此是动物)的参数。我在“动物”中定义了抓取()方

  • 例如,我有以下接口 实现此接口的抽象类 以及具体实施 我想建议所有将转换为任何内容的方法。我创建了以下方面 这是行不通的。Spring不会为类创建代理。然而,如果我从抽象类重写方法,它将开始工作,Spring成功地为创建代理,并执行所有需要的逻辑。 为什么会发生这种情况?有没有办法定义切入点,这样我就不需要重写方法?

  • 我有一个抽象类,这个类是在她的子类中扩展的: < li >我在这个抽象类上实现了一个方法,并抽象了另一个方法 < li >实现的方法是每个子类对象都必须访问的通用方法。所以我决定在抽象类上实现它,避免在每个子类上实现相同的方法。 小例子: 我想听听你对这种实施方式的看法, 问候。

  • 问题内容: 我正在编写一个流畅的API,以配置和实例化一系列“消息”对象。我有消息类型的层次结构。 为了在使用Fluent API时能够访问子类的方法,我使用了泛型来对子类进行参数化,并使所有的fluent方法(以“ with”开头)都返回泛型类型。注意,我省略了流利方法的大部分内容。其中进行了许多配置。 具体的子类类似地重新定义泛型。 该代码有效,即,我可以实例化任何类并使用所有流利的方法: 以

  • 下面是一个通用搜索算法的实现: 接口: (方括号=弧形括号) 问题出在哪里?我想不通...对泛型参数T也进行了扩展。