Generics AspectJ ITD泛型方法参数中断编译

Generics AspectJ ITD泛型方法参数中断编译,generics,aop,aspectj,Generics,Aop,Aspectj,我想介绍XSD生成的具体类的接口。首先,我需要显示工作版本: public interface IBooking<T extends IChargeList> { T getChargesList(); void setChargesList(T value); } public aspect IntertypeDeclarationAspect { declare parents:Booking implements IBooking<Booking


我想介绍XSD生成的具体类的接口。首先,我需要显示工作版本:

public interface IBooking<T extends IChargeList> {
    T getChargesList();
    void setChargesList(T value);
}

public aspect IntertypeDeclarationAspect {
    declare parents:Booking implements IBooking<BookingChargeList>;
    declare parents:BookingChargeList implements IChargeList;
}

首先处理最后一部分,返回类型不是方法签名的一部分,因此
getChargesList()
没有参数,方面正确地实现了这一点。在第二个示例中,它的返回类型不会被绑定,但这并不重要

至于为什么没有实现
setChargesList(T)
,那是因为没有定义“T”。当接口方法签名使用方法级泛型类型定义时,该定义也必须存在于实现中。所以这是有效的:

@Override
public <T extends IChargeList> void setChargesList(final T value) {
}
这就是AspectJ生成的第二个示例


恐怕我的AspectJ不够好,无法告诉您如何解决眼前的问题,但我希望它能帮助您解决问题。

请添加Booking类源代码的相关部分,特别是
getChargesList()
setChargesList()的声明
方法。@NándorElődFekete我已经添加了它。
public BookingChargeList getChargesList() {
    return chargesList;
}
public void setChargesList(BookingChargeList value) {
    this.chargesList = value;
}
@Override
public <T extends IChargeList> void setChargesList(final T value) {
}
@Override
public void setChargesList(final T value) {
}