我得到了一个类,该类Shop
维护类型项的集合T
。它为单个或多个项目提供买卖功能,并使用 aList<T>
作为买卖容器:
import java.util.*;
public class Shop<T> {
List<T> stock;
public Shop() { stock = new LinkedList<T>(); }
public T buy() {
return stock.remove(0);
}
void sell(T item) {
stock.add(item);
}
void buy(int n, List<T> items) {
for (T e : stock.subList(0, n)) {
items.add(e);
}
for (int i=0; i<n; ++i) stock.remove(0);
}
void sell(List<T> items) {
for (T e : items) {
stock.add(e);
}
}
}
现在,我需要修改这个类,以便我可以购买/出售任何Collection
类型的物品......而不仅仅是List
. 我想我会先注释掉大部分内容并尝试一一转换,从以下开始stock
:
public class Shop<T> {
// List<T> stock;
Collection<T> stock;
// public Shop() { stock = new LinkedList<T>(); }
public Shop() { stock = new Collection<T>(); }
...
...
}
第一个声明有效,但尝试在构造函数中实例化接口,正如预期的那样,不起作用。但据我所知,stock
需要是 aCollection
以便我可以Collection
在处理它的其他函数中使用任何子类型。而且我很确定在这种情况下我不能使用通配符作为类型参数。那么我到底能做些什么来构建stock
这里......或者我应该如何stock
首先声明不同的地方?