我正在尝试使用Java编写Connect Four游戏,基于一些给定的接口。
我的问题是我有一个编程任务,包括我必须使用的接口,但实现它们时会有一些错误。以下接口/类是预定的:
public interface Move {
}
public interface Game<M extends Move> {
...
pulbic M someMethod(){
}
...
}
public interface AIPlayer<M extends Move> {
...
}
public class AlphaBetaAlgorithm<G extends Game<M>, M extends Move> implements AIPlayer<M>{
...
}
以下的类是我自己的类,我通过实现上层接口来编写:
public class ConnectFourMove implements Move{
...
}
public class ConnectFourGame<ConnectFourMove> implements Game{
...
}
现在的问题是,在“ConnectFourGame”类的方法中,我需要使用“AlphaBetaAlgortihm”类,现在使用“ConnectFourGame”和“ConnectFourMove”。所以我们记得:
public class AlphaBetaAlgorithm<G extends Game<M>, M extends Move> implements AIPlayer<M>{
...
}
现在我想做的是:
public class ConnectFourGame<ConnectFourMove> implements Game{
...
public ConnectFourMove someMethod(){
AlphaBetaAlgorithm alphabeta = new AlphaBetaAlgorithm<ConnectFourGame, ConnectFourMove>();
...
}
...
}
我在课堂宣言中有一个错误告诉我:
“类型参数ConnectFourMove正在隐藏ConnectFourMove类型”
方法声明中的一个,告诉我:
“返回类型与Game.someMehtod()”
不兼容和“alphabeta”声明中的两个说:
“绑定不匹配:ConnectFourGame类型不是AlphaBetaAlgorithm类型的有界参数&gt;的有效替代” 和 “绑定不匹配:ConnectFourMove类型不是AlphaBetaAlgorithm类型的有界参数的有效替代”
在将接口实现到类中时,我做错了什么导致它们不能将彼此识别为通常引用的接口的实现?
注意:我已导入了到达我实现的接口所需的所有软件包。
答案 0 :(得分:2)
public class ConnectFourGame implements Game<ConnectFourMove>
这是因为ConnectForGame实现了Game,你实现的游戏没有指定类型。