繁体   English   中英

Java泛型:绑定不匹配

[英]Java generics: Bound mismatch

我有一个具有此定义的泛型类:

public class AcoProblemSolver<C, E extends Environment, A extends AntColony<E, Ant<C, E>>> {

AntColony就是这样的:

public abstract class AntColony<E extends Environment, A extends Ant<?, E>> {

Ant就像这样:

public abstract class Ant<C, E extends Environment> {

我希望以这种方式扩展AntColony

public class FlowShopProblemSolver extends
    AcoProblemSolver<Integer, FlowShopEnvironment, FlowShopAntColony> {

但Eclipse在FlowShopAntColony参数类上显示错误:

Bound mismatch: The type FlowShopAntColony is not a valid substitute for the bounded parameter <A extends AntColony<E,Ant<C,E>>> of the type AcoProblemSolver<C,E,A>

这让我感到困惑,因为FlowShopAntColony是这样定义的:

public class FlowShopAntColony extends
    AntColony<FlowShopEnvironment, AntForFlowShop> {

AntForFlowShop是这样的:

public class AntForFlowShop extends Ant<Integer, FlowShopEnvironment> {

为什么FlowShopAntColony不被接受为有效参数?

A extends AntColony<E, Ant<C, E>>

AcoProblemSolver的第三个参数有限制extends AntColony<E, Ant<C, E>> AcoProblemSolver extends AntColony<E, Ant<C, E>> AntColony的第二个参数必须完全是 Ant<C, E>并且您正在尝试传递Ant的子类。 尝试:

A extends AntColony<E, ? extends Ant<C, E>>

你可能想要其他类似的? extends 在其他地方? extends条款。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM