方法 addAll(Collection<? extends Set<Integer>>) 不适用于参数 (Set<Integer>)

问题描述 投票:0回答:1

我离开 Java 已有十多年了,在我把它放在一边之前,我几乎没有遇到过泛型。我回来处理练习题,遇到了一个我无法理解的错误。

最小的例子:

Set<Set<Integer>> powerSet = new HashSet<Set<Integer>>();
Set<Integer> nthSizeSubset = new HashSet<Integer>();
powerSet.addAll(nthSizeSubset);

在 Eclipse 中产生错误:

Set 类型中的方法 addAll(Collection) 不适用于参数 (Set)

我不确定类型是否可以扩展自身,但无论哪种方式,我都不知道如何理解错误并修复它。

java generics set
1个回答
0
投票
当您想要添加参数化类型的

addAll

 时,请使用 
Collection
。但你的参数化类型是
Set<Integer>
。因此,尝试将
addAll
a
Set<Integer>
转换为
Set<Set<Integer>>
是行不通的,因为它期待类似
Collection<Set<Integer>>
的内容。但你只给了
Set<Integer>
。因此,参数无效。

泛型的指路明灯是类型参数。它决定数据、方法以及容纳这两者的类之间的关系。每当您阅读 Javadocs 时,请始终考虑类型参数。

© www.soinside.com 2019 - 2024. All rights reserved.