嗨,假设以下简单类:
public class CRUDController<T extends __Entity<T>> {
...
}
和
public class Tag extends __Entity<Tag> {
...
}
和
public class KalaTag extends Tag {
...
}
当我使用public class TestController extends CRUDController<Tag>
时,一切正常,但当我使用public class TestController extends CRUDController<KalaTag>
时,会出现以下错误:
输入参数&#39; KalaTag&#39;不在其范围内;应该扩展&#39; __实体&lt; KalaTag&gt;&#39;
提前谢谢你;)
答案 0 :(得分:3)
CRUDController
期望其论据(T
)延长__Entity<T>
。
显然KalaTag
没有这样做,因为它扩展了__Entity<Tag>
。
可能的解决方案:
KalaTag
延长__Entity<KalaTag>
Tag
定义为class Tag<T> extends __Entity<T>
,然后class KalaTag extends Tag<KalaTag>
答案 1 :(得分:2)
另一个选项是允许CRUDController
使用父类型__Entity
绑定的任何T
。
public class CRUDController<T extends __Entity<? super T> > {
}
这又取决于您在T
及其子类中对CRUDController
的使用情况。