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的特定子类

10-02 23:57