真的有必要使用'擴展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