是否真的需要使用“扩展BoardGame”?
如果删除它,我的代码仍然有效,但是我不确定是否应该这样做。
我这样做是因为copy()方法。
有什么建议么。
谢谢
public interface BoardGame<GAME extends BoardGame>
{
GAME getGame();
BoardGame<GAME> copy();
int currentPlayer();
boolean isGameOver();
int getTotalMoves();
BoardResult getOutcome(int playerIndex);
void makeMove(int moveIndex);
void addMoveObserver(BoardGameMoveObserver observer);
}
最佳答案
从某种意义上来说,它们都可以编译,所以两者都可以。
如果使用<GAME extends BoardGame>
,则所有实现都将需要使用扩展BoardGame的类型参数。如果任何方法采用参数或返回GAME值,这都是有意义的。
您的情况是getGame()
。因此,在<GAME extends BoardGame>
的情况下,所有getGame()
的用户都可以算出返回值至少是BoardGame。但对于,getGame()
可以返回定义的实现类的任何类型。