java - 使用 <Item extends java.lang.Comparable<Item>> 时绑定(bind)不匹配

标签 java generics comparable

Bound mismatch: The type Integer is not a valid substitute for the bounded parameter <Item extends Comparable<Item>> of the type BTNode<Item>

这是我收到错误的地方:

public class BinaryTree<Integer> {
  private BTNode<Integer> root;
  //...
}

这是我正在使用的类:

public class BTNode<Item extends java.lang.Comparable<Item>> implements java.lang.Comparable<BTNode<Item>> {
  private Item data;
  //...
}

我认为Integer包装器应满足条件 <xx extends Comparable<xx>> 。 我的理解有错吗?你能告诉我我在这里做错了什么吗?

仅供记录,我正在使用 java.lang.Comparable而不是我自己的 Comparable 实现.

最佳答案

问题是这样的:

public class BinaryTree<Integer> {
    private BTNode<Integer> root;
}

类参数名为 Integer 。声明BTNode<Integer>时,您没有引用 java.lang.Integer而是参数。

我真的不知道你想做什么,但有一个建议:最好使用一个字母来命名你的类参数。例如使用时不会出现错误:

public class BinaryTree<T> {
    private BTNode<Integer> root;
}

如果你想要root要真正使用类参数,那么:

public class BinaryTree<T extends Comparable<T>> {
    private BTNode<T> root;
}

看看下面的类(class):http://docs.oracle.com/javase/tutorial/extra/generics/index.html

关于java - 使用 <Item extends java.lang.Comparable<Item>> 时绑定(bind)不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25115537/

相关文章:

java - 如何使用 AliasToEntityMapResultTransformer 获取订单映射?

java - RMI 中的哪一层执行编码和解编码?

C# - 动态 Linq - 通用搜索 - 日期时间

java - 在Java中开发泛型修饰符的正确方法

java - 如何实现自定义对象的 Compare to 方法

java - 什么时候类应该是 Comparable 和/或 Comparator?

java - 编译错误-无法访问的语句

java - jmeter 测试因内存不足错误而失败

java - 如何将继承对象列表转换为 Java 中的对象集合?

java - 是否存在与自身不可比的 Comparable?