![](/img/trans.png)
[英]What is the C++ equivalent of inheriting a Java collection interface (Set, Map, List etc.)? Or extending AbstractCollection?
[英]Java illegale conversion from Collection to AbstractCollection
我收到以下错误:
type mismatch: cannot convert from Collection<E> to AbstractCollection<E>
Google在前几页上没有显示任何相关结果,并且我确信有充分的理由让Collection不扩展Abstract Collection。
我在StackOverflow上看到过一篇文章,但是他们只是在没有真正给出这种行为任何原因的情况下继承了继承(“ AbstractCollection”中“ Collection”违反了什么?)
我大量使用AbstractCollection,并在使用HashMap的“值”作为AbsractCollection-yielding函数的结果时遇到了这个问题。
我应该使用什么代替AbstractCollection作为默认的,非特定的集合返回类型?
AbstractCollection<E> implements Collection<E>
。 因此,您可以只使用Collection<E>
,这是您想要的,更通用。
这意味着您将能够处理实现Collection
所有内容,而不是只能处理扩展AbstractCollection
任何AbstractCollection
。
最好使用Collection
作为类型,而不是AbstractCollection
因为它更通用。
如果一个类实现了Collection
但没有扩展AbstractCollection
,那么它将起作用(这正是您在这里所发生的事情)
AbstractCollection类实现了Collection接口,并且该类扩展了Object类。因此,我的建议首先是使用Collection接口而不是AbstractionCollection。 它是AbstractionCollection的更强大的父类。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.