有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java illegale从集合到抽象集合的转换

我发现以下错误:

type mismatch: cannot convert from Collection<E> to AbstractCollection<E>

谷歌在前几页上没有显示相关结果,我相信Collection不扩展抽象集合是有充分理由的

我在StackOverflow上看到了一篇帖子,但他们只是进入了继承,并没有真正给出这种行为的任何原因(在AbstractCollection中,“Collection”违反了什么?)

我经常使用AbstractCollection,在使用HashMap的“值”作为AbstractCollection函数的结果时遇到了这种情况

我应该使用什么来代替AbstractCollection作为集合的默认、非特定的返回类型


共 (3) 个答案

  1. # 1 楼答案

    AbstractCollection<E> implements Collection<E>。所以,您可以使用Collection<E>,这是您想要的,更通用

    这意味着您将能够处理实现Collection的任何内容,而不是只处理扩展AbstractCollection的任何内容

  2. # 2 楼答案

    最好使用Collection作为类型,而不是AbstractCollection,因为它更通用

    如果一个类实现了Collection,但没有扩展AbstractCollection,它就可以工作了(这正是您在这里遇到的情况)

  3. # 3 楼答案

    AbstractCollection类实现了Collection接口,这个类扩展了class对象。所以首先我的建议是使用集合接口,而不是使用AbstractionCollection。它是AbstractionCollection更强大的父类