【发布时间】: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<PairNode<FirstType,SecondType>> -
请注意
public HeapMinPriorityQueue(List<? extends Comparable<?>> list)应该可以工作。 -
即使我将其更改为 Comparable
>,它仍然给我一个错误,说它无法转换。
标签: java comparable implements