Java illegale从集合到抽象集合的转换
我发现以下错误:
type mismatch: cannot convert from Collection<E> to AbstractCollection<E>
谷歌在前几页上没有显示相关结果,我相信Collection不扩展抽象集合是有充分理由的
我在StackOverflow上看到了一篇帖子,但他们只是进入了继承,并没有真正给出这种行为的任何原因(在AbstractCollection中,“Collection”违反了什么?)
我经常使用AbstractCollection,在使用HashMap的“值”作为AbstractCollection函数的结果时遇到了这种情况
我应该使用什么来代替AbstractCollection作为集合的默认、非特定的返回类型
# 1 楼答案
AbstractCollection<E> implements Collection<E>
。所以,您可以使用Collection<E>
,这是您想要的,更通用这意味着您将能够处理实现
Collection
的任何内容,而不是只处理扩展AbstractCollection
的任何内容# 2 楼答案
最好使用
Collection
作为类型,而不是AbstractCollection
,因为它更通用如果一个类实现了
Collection
,但没有扩展AbstractCollection
,它就可以工作了(这正是您在这里遇到的情况)# 3 楼答案
AbstractCollection类实现了Collection接口,这个类扩展了class对象。所以首先我的建议是使用集合接口,而不是使用AbstractionCollection。它是AbstractionCollection更强大的父类