【发布时间】:2016-10-02 17:46:42
【问题描述】:
我正在为我的数据结构类创建一个带有卡片的简单战争游戏。
我目前有一个方法如下:
Play Turn(List<Card> player1, List<Card> player2){
return null;
}
上述方法(目前我理解是不完整的)假设接受 List 接口的任何子接口(即 Stack、ArrayList、LinkedList 等)。
堆栈使用 pop() 返回/删除堆栈的顶部,像 ArrayList 或 LinkedList 我可以使用 get() 方法返回第一个元素,然后使用 remove() 方法删除该元素.
那么有没有一种方法可以让我以通用的方式做到这一点,还是我必须创建一个针对我允许使用的每个版本的 List 量身定制的方法?
【问题讨论】:
-
Stack,ArrayList, ..., 都实现了List接口的方法(如get,remove, ...),所以你可以将它们用于一切......为什么在不需要时使用特定的Stack方法(如pop)? -
如果您将实现限制为 List 方法,则不需要单独的实现。如果您认为您需要了解底层类型,请三思。
-
这回答了我的问题。我的印象是,虽然我在'List'界面下使用'Stack',但与使用'get'和'remove'等方法相比,我必须使用'pop'等方法。跨度>
-
接受接口的全部意义在于您不必担心实际的实现。使用
List方法,就是这样。