我的代码如下:
private <A extends AbstractDocument> List<A> reorderDocuments(List<A> docs)
{
List<A> newdoclist = new ArrayList<A>();
for (A o : docs) {
if(//some condition) {
//TODO::Generic type
List<A> tempDocs = new ArrayList<A>();
tempDocs.add( o );
tempDocs.addAll(o.getAlikeDocuments());
//sort method called
}
return newdoclist;
}
更改了类型的开始标记,函数o.getAlikeDocuments()
返回类型为抽象文档的列表,但此方法仍然在行tempDocs.addAll(o.getAlikeDocuments());
上给出错误,说明方法addAll(Collection<? extends A>)
in类型List不适用于参数(List<AbstractDocument>)
。
提前感谢帮助。
谢谢
Vaibhav的
答案 0 :(得分:3)
您遇到的问题是A
是AbstractDocument
的子类,除了AbstractDocument
A
要使其编译,如果您知道这不是问题,则使用类型擦除。
tempDocs.addAll((List) o.getAlikeDocuments());
答案 1 :(得分:0)
转换为原始列表可以解决问题
tempDocs.addAll((List) o.getAlikeDocuments());
以下页面可能有助于记住extends和super
的限制