java - 嵌套泛型集合

标签 java generics

在不陷入细节的情况下,我的代码代表一个图书馆,其中每本书都由包含一组单词的一组页面组成。

我创建了自己的 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/

相关文章:

java - plovr 构建工具可以使用外部闭包编译器吗?

java - 在 3d 空间中渲染三角形面

Java StackOverflow 封装

java - 尝试使用它们时,同一调用中的两个泛型方法是否会导致编译错误?

java - 尝试创建 map 的 map 时出现不兼容类型错误

c# - .NET 是否有办法检查列表 a 是否包含列表 b 中的所有项目?

java - 有没有办法使用 libgdx 一次加载整个目录?

java - Vaadin 本地语言环境选择

java - Collections.emptyList() 和/或 Java 泛型方法的奇怪类型推断行为?

java - 错误的类型推断