如何使用通配符在Java中复制泛型集合
考虑以下java类:如何使用通配符在Java中复制泛型集合,java,generics,Java,Generics,考虑以下java类: import java.util.Collection; import java.util.Iterator; import java.util.LinkedList; public class NumberSet { private Collection<? extends Number> numbers; public NumberSet(Collection<? extends Number> numbers) {
import java.util.Collection;
import java.util.Iterator;
import java.util.LinkedList;
public class NumberSet {
private Collection<? extends Number> numbers;
public NumberSet(Collection<? extends Number> numbers) {
this.numbers = numbers;
}
public NumberSet(NumberSet other) {
//copy other.numbers to this.numbers
numbers = new LinkedList<>();
for (Iterator<? extends Number> it = other.numbers.iterator(); it.hasNext();) {
numbers.add(it.next()); // Here's Syntax Error near `it.next()`
}
}
}
我理解PECS
的含义,但是我想为这个类实现一个复制构造函数。复制的实例将用作other
的快照。有什么想法吗?改变:
Collection<? extends Number> dst
CollectionSee还可以在@ChetanKinger上查看助记符PECS-上面的引文来自哪里?你能提供一个链接或参考资料吗?@BrianAgnew为这本书添加了一个链接。@BrianAgnew我真不明白人们怎么能把这个问题标记为“什么是PECS”
的重复?如果有人知道PECS这个词,他们一开始就不会发帖,因为我同意你的观点,所以我把它重新打开了。我认为PECS的问题/答案确实解决了这个问题,但我接受你的观点completely@BrianAgnew谢谢你重新提出这个问题。我正在编辑标题,以便更容易访问。@MostafaNazari请阅读:@ChetanKinger我直到现在才在电脑前。谢谢大家的参与。我知道PECS的含义,但这个问题对我来说仍然是个谜,我会尽快改变问题的主体,以消除所有歧义。
Collection<? extends Number> dst
Collection<? super Number> dst