【发布时间】:2014-09-22 14:53:15
【问题描述】:
我遇到了泛型类的问题,我将用我的示例类来解释它:
二叉树
public class BinaryTree<T extends Comparable<T>> {
索引
public abstract class Indexed<T extends Comparable<T>> implements Comparable<Indexed<T>> {
IndexedBinaryTree
public class IndexedBinaryTree<T extends Indexed<? extends Comparable<Indexed<?>>>> extends BinaryTree<T> {
扩展索引的示例类
public class Vokabel extends Indexed<String> {
IndexedBinaryTree 不工作。我想要做的是拥有一个包含索引对象的 BinaryTree,可以像这样创建:
IndexedBinaryTree<Vokabel> ibt = new IndexedBinaryTree<>();
错误 NetBeans 给了我:
类型参数? extends Comparable> 不在范围内 类型变量 T 其中 T 是一个类型变量: T 扩展了在 Indexed 类中声明的 Comparable
> expected type argument T#1 is not within bounds of type-variable T#2 where T#1, T#2 are type-variables: T#1 extends Indexed<? extends Comparable<Indexed<?>>> declared in class IndexedBinaryTree T#2 extends Comparable<T#2> declared in class BinaryTree
【问题讨论】:
-
“不工作”是什么意思?请详细说明。
-
定义不起作用。发布错误以及预期的行为是什么。
-
已编辑主帖(i.imgur.com/SRx0iDv.png - 错误截图)
-
我不明白这个声明:
Indexed<T extends Comparable<T>> implements Comparable<Indexed<T>>。强制T成为Comparable然后将Comparable强制在不同的东西上的目的是什么? -
您可能需要
K extends Comparable<K>, T extends Indexed<K>之类的内容。你对我上面的评论感到困惑。您似乎希望T成为Indexed并成为Indexed的类型参数。