java中的集合
所以我有这个代码。基本上,它应该能够购买任何类型的股票,并且您应该能够从该股票购买任何类型的集合,包括对象 对于主要功能,我有这个。基本上我有一个字符串的库存,我想从这个字符串库存中购买一组对象。然而,我得到了这个错误 java.util.Collection中的add(捕获#880 of?)不能应用于(T)java中的集合,java,Java,所以我有这个代码。基本上,它应该能够购买任何类型的股票,并且您应该能够从该股票购买任何类型的集合,包括对象 对于主要功能,我有这个。基本上我有一个字符串的库存,我想从这个字符串库存中购买一组对象。然而,我得到了这个错误 java.util.Collection中的add(捕获#880 of?)不能应用于(T) import java.util.*; 公共类lab6{ 公共静态void main(字符串[]args){ 土耳其商店=新商店(); 土耳其。出售(“猪肉”); 火鸡。出售(“鸡肉”);
import java.util.*;
公共类lab6{
公共静态void main(字符串[]args){
土耳其商店=新商店();
土耳其。出售(“猪肉”);
火鸡。出售(“鸡肉”);
土耳其;
Set属性=新的HashSet();
土耳其。购买(2,财产);
for(字符串e:财产)
系统输出打印ln(e);
}
}
这就是类文件
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, Collection<?> items) {
for (T e : stock.subList(0, n)) {
items.add(e);
}
for (int i=0; i<n; ++i) stock.remove(0);
}
}
import java.util.*;
公营商店{
上市股票;
public Shop(){stock=new LinkedList();}
公众不买{
退库。删除(0);
}
无效销售(T项){
增加库存(项目);
}
无效购买(整数n,集合项目){
for(te:stock.subList(0,n)){
增加(e)项;
}
对于(int i=0;i用以下方法替换buy
方法:
void buy(int n, Collection<T> items) {
for (T e : stock.subList(0, n)) {
items.add(e);
}
for (int i=0; i<n; ++i) stock.remove(0);
}
void buy(整数n,集合项目){
for(te:stock.subList(0,n)){
增加(e)项;
}
对于(int i=0;i这里的问题是Collection
可以包含任何类型的对象,T
可能不是?
类型的子类型。例如,您可以传入Collection
,如果T
是字符串,显然您不能执行项。添加(e)
您需要确保集合
包含T
的超类型,以便添加T
始终有效,因此请尝试以下操作:
void buy(int n, Collection<? super T> items)
void buy(int n,collectionary)你确定这是他想要的吗?他正在传递一个Set来购买,在本例中T是一个字符串。我是对的,这就是他想要的。他不能向集合添加一个T。这就是编译器抱怨的。找不到这一行的符号方法buy(int,java.util.Set)…turkey.buy(2,Occupations);哦,该死,应该想到这个!谢谢……那么有人知道如何遍历项目集合吗?(对于?e:项目)没有work@Jake:由于?super T
可以是任何超类型,因此您不能假定任何特定类型,因此您最好为(对象e:项)
public static void main(final String[] args) {
final Shop<String> turkey = new Shop<String>();
turkey.sell("pork");
turkey.sell("chicken");
turkey.print();
final Set<String> possessions = new HashSet<String>();
turkey.buy(2, possessions);
for (final String e : possessions) {
System.out.println(e);
}
}
void buy(int n, Collection<? super T> items)