真的有必要使用'扩展BoardGame'吗?这是否适用于仿制药?
如果我删除我的代码仍然有效,但我不知道我是否应该。
我这样做是因为复制()方法。
有任何建议。
感谢
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);
}
需要指出的是,在这种情况下,泛型不会为您提供任何帮助。如果您希望从复制方法中获得子类型的好处,则必须具有对该子类型的变量的引用。你可以做到这一点没有泛型,你的代码更干净。 – AndyT 2011-03-06 09:45:22
不完全。随着泛型实现'getGame()'必须返回'GAME',没有泛型'BoardGame'就足够了。 – 2011-03-06 14:07:51
好点,虽然我认为增加的复杂程度很容易抵消强制返回类型的边际收益。一个实现BoardGame的类将会为这个方法返回一个不同的实现类(并且Javadoc应该使预期的行为清晰)。 – AndyT 2011-03-06 17:34:48