在不陷入细节的情况下,我的代码代表一个图书馆,其中每本书都由包含一组单词的一组页面组成。
我创建了自己的 Set 实现:
class PageSet<E> extends HashSet<E>(){
public boolean set(int index, E e){....}
....
}
和
class WordSet<E> extends HashSet<E>(){
public boolean set(int index, E e){....}
....
}
当我尝试在主类中创建一本书时,我遇到了困难:
Set<Set<Word>> dictionary = new PageSet<WordSet<Word>>();
这会导致类型转换不匹配。不过它会很乐意接受
Set<Set<Word>> dictionary = new PageSet<Set<Word>>();
有人可以解释一下我在使用这样的通用设置时做错了什么吗?
最佳答案
基本上,一个PageSet<WordSet<Word>>
不是Set<Set<Word>>
,因为X<Subclass>
不是X<Superclass>
.
如果你说过
Set<WordSet<Word>> dictionary = new PageSet<WordSet<Word>>();
那么这也会起作用。
关于java - 嵌套泛型集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16617024/