[英]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.