我有一个赋值(用java编写),它在接口方面非常具体,以及如何以及在何处实现各种各样的东西。而且我知道有很多类似的问题被问到,但我似乎无法将它们与我的问题联系起来。
我必须实施的课程是
public class Algorithm<G extends Game<M>, M extends Move>
implements AIp<M>
我不允许更改该名称。此类中的方法必须实现类G
中的一些方法。
Game
中实现的界面G
包含一些方法,例如makeMove()
或evaluateSituation()
(我们在这里播放Connect 4)。
到目前为止,我已经在单独的类中实现了两个接口的所有方法,并且我还创建了一个播放Board
(类)。在G
中,我创建了一个玩游戏的棋盘对象。
所以我的问题是:如何在我的方法(G
)中使用类Board
和类Algorithm
中的方法,而不创建{{1}的新对象(因为我已经有了)和/或Board
。
编辑:
G
someList未在Game中实现。
答案 0 :(得分:1)
据我了解您的概念,我认为您可以在Board
类中为Game
对象声明getter方法,并在G
中实现。
class G
{
...
public Board getBoard()
{
return theBoardYouCreatedInG;
}
}
如果您已有G
个对象,则只需在Algorithm
的构造函数中提供它。然后,您只需使用G
对象及其getter方法来获取Board
对象
public class Algorithm<G extends Game<M>, M extends Move> implements AIp<M>
{
G g;
public Algorithm(G g)
{
this.g = g;
}
public someMethod()
{
g.someMethodFromG();
g.getBoard().someMethodFromBoard();
}
}
编辑:
如果您想以这种方式使用代码,则需要在Game
中实现getBoard()。如果那不可能,那么我猜你必须在构造函数中提供Board
对象(就像你使用G对象一样)
G不应该是一个真正的类,它是一个类的参数,你稍后会指定一些类(在这种情况下,任何实现Game
的类),如果你想使用{的方法{1}}他们需要在G
中声明。