我有一个通用的AVL树类声明为:

public class AVLTree<T extends Comparable<T>>

每当我尝试将avl树类初始化为构造函数中的泛型时,我就会在另一个类中遇到编译器错误。

public class PQAVL<T> {
private AVLTree<T extends Comparable<T>> avl;
    public PQAVL() {
        avl = new AVLTree<T extends Comparable<T>>(true);
    }
}

我已经尝试了几个接收错误的不同声明。 有谁知道我会如何正确地宣布这个?

===============>>#1 票数:1 已采纳

声明新类型变量时使用<T extends ...>的语法。

声明变量或字段时,不能声明新的类型变量。 您也不能将新类型变量声明为初始化表达式的tpe参数,例如

avl = new AVLTree<T extends Comparable<T>>(true);

你需要把你的班级变成类似的东西

public class PQAVL<T extends Comparable<T>> {
    private AVLTree<T> avl;
    public PQAVL() {
        avl = new AVLTree<T>(true);
    }
}

这样类型参数在类级别声明并具有适当的边界。

===============>>#2 票数:1

我认为public class PQAVL<T>需要是public class PQAVL<T extends Comparable<T>>

你目前所做的是接受任何T作为该类的通用,然后在较低级别确保它是可比较的。 您必须在类声明级别执行此操作。

===============>>#3 票数:0

您只需要使用AVLTree<T>

extends Comparable<T> ”部分仅指定对T的限制,但在声明该类型的变量时不是您指定的内容。 您只在声明类型本身时指定。

顺便说一下,说“有一个声明”是一个奇怪的措辞选择; 通常我们在这里称“avl”为“字段”。

  ask by translate from so

未解决问题?本站智能推荐:

1回复

Java中的泛型声明

是否可以将对象声明为Foo<?, ?> or Foo<?, Integer>以使其更通用,以便可以将proc(T[] a)的对象保存为T不同类型?
2回复

Java泛型:如何将泛型参数声明为另一个泛型参数的基本类型?

代码会编译。 但是当我这样做时: 它仍然可以编译,但在运行时会给出强制转换异常,因为该对中的第二个元素是汽车,而不是坦克。 所以我将其更改为: 但是此代码仍然可以编译并给出相同的异常: 似乎T的声明扩展R在这里不起作用。 如何在此处强制执行类型安全?
2回复

具有泛型Java的类声明

我正在读SCJP。 我没有使用class<?>和class<? extends anything> class<? extends anything> ......如果这意味着我们可以传递任何扩展了“任何内容”的类,那么为什么上面的代码不起作用?
2回复

方法声明中的Java泛型

我在Joshua Bloch在UserGroupsAtGoogle上的一次演讲中看到了这段代码 链接: http : //www.youtube.com/watch?v = V1vQf4qyMXg 我想知道<T>在putFavorite方法的方法声明中意味着什么。 我
5回复

泛型声明在Java中的差异

我理解泛型可以帮助您声明ArrayList()具有String类型的对象。 我的问题是以下哪一个与上述不同? 或者与其他人不同的人
5回复

Java泛型和Map声明

我很难用泛型声明地图。 我想声明一个具有以下属性的地图: 密钥是派生自特定接口(IFoo)的任何T类​​型的Class对象 该Map的值为另一个Map,其键为String且其值为T型 我以为我可以这样做: 我在“扩展”上收到语法错误 如果我将T类型替换为
2回复

在Java泛型声明中使用“或”

我有一个方法返回一个实例 另一个方法返回一个实例 现在,如果我想在自己的字段中动态添加其中一个Maps,该如何编写泛型使其正常工作? 即: 现在,即使y()被声明为Collection,我也可以转换为签名吗? 如果不能转换,我可以以某种方式写这个(集合或列表)
5回复

ArrayList,带有Java中的泛型声明

以下代码给出了行l.add的错误 并强迫我把它写成l.add(1, null); 为什么会这样?
3回复

Java泛型:声明泛型类型的映射值

我是仿制药的新手。 有Map就好 和像这样的方法 如何更改地图声明,以便在从方法返回时不必进行强制转换?
2回复

具有多个泛型的Java泛型数组声明?

我正在尝试像这样在Java中创建泛型类 现在java告诉我我不能声明泛型数组吗? 我知道在CI中可以将其放在内存中。 有谁知道该怎么用java完成?