在下面提到的程序数组中,一个List作为参数传递给了这个函数。任务是将数组切割为定义大小的LookupTable列表,然后将它们添加到binlists中。在这种情况下,什么应该是binlists的声明?它应该是List吗?因为它在add()函数中给出了一个错误。如果我使用提到的所有列表作为原始类型,它完全正常。但我的目的是使其参数化。
protected List<LookupTable> binlists;
binlists = new ArrayList<LookupTable>(nofbins);
while(chunk+binsize <= tot_size)
{
List tempsort = (List<LookupTable>)arry.subList(chunk,chunk+binsize);
System.out.println(tempsort.size());
binlists.add(tempsort);
chunk = chunk+binsize;
}
答案 0 :(得分:1)
您需要使用addAll
方法将列表添加到现有列表中: -
binlists.addAll(tempsort);
并且您应该始终声明List
属于generic type
。
因此,请将您的tempSort
列表声明为generic list
类型LookUpTable
: -
List<LookupTable> tempsort =
(List<LookupTable>)arry.subList(chunk,chunk+binsize);
事实上,如果您将typecast
列表声明为通用类型,则可以保留自arry
。