protected List<? extends ErrorTO> errors = new ArrayList<ErrorTO>();
public abstract Collection<? extends ErrorTO> getErrors();
public void registerError(ErrorTO e) {
errors.add(e);
}
行“ errors.add(e)”出现编译错误,期望某种类型的“?extends ErrorTO”,并且不喜欢ErrorTO?为什么以及如何解决这个问题?谢谢!
最佳答案
List<? extends ErrorTO>
不是可以包含任何扩展ErrorTO
的列表。
它是ErrorTO
的(未指定)子类的列表。
如果MyErrorTO
扩展了ErrorTO
,那么我可以创建一个List<MyErrorTO>
并将其分配给errors
。
然后,您的代码将尝试向我的列表添加ErrorTO
,这是非法的-我的列表只能包含ErrorTO
的特定子类