【问题标题】:Comparable Implementation not Working可比较的实现不起作用
【发布时间】:2016-08-18 00:42:20
【问题描述】:

我有一个实现可比较的类,如其签名所示:

public class PairNode<FirstType, SecondType> implements Comparable

这个类编译得很好,并且有一个合适的 compareTo 方法。

在另一个类中,它的构造函数在其构造函数中接受一个可比较对象的 ArrayList,如下所示:

public HeapMinPriorityQueue(ArrayList<Comparable> list)

但是,稍后,当我有一个 PairNodes 的 ArrayList 时,我尝试使用这样的构造函数:

HeapMinPriorityQueue pq = new HeapMinPriorityQueue(list);

Java 告诉我它们是不兼容的类型,因为字符和整数的 PairNodes 的 ArrayList 不能转换为 Comparables 的 ArrayList。但是它们不应该是等价的吗,因为我的 PairNode 实现了 Comparable?

【问题讨论】:

  • 哦,谢谢!我想我假设它们不是多态的!
  • 应该是implements Comparable&lt;PairNode&lt;FirstType,SecondType&gt;&gt;
  • 请注意public HeapMinPriorityQueue(List&lt;? extends Comparable&lt;?&gt;&gt; list) 应该可以工作。
  • 即使我将其更改为 Comparable>,它仍然给我一个错误,说它无法转换。

标签: java comparable implements


【解决方案1】:

Assylias 通过发布链接为我回答了这个问题,但泛型类型不是多态的,因此这就是它不起作用的原因。我正在将我的课程更改为特定版本以解决此问题。谢谢你们!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多