我遇到了以下问题 线程“main”中的异常java.lang.ClassCastException:java.lang.ref.SoftReference无法强制转换为java.lang.Comparable
代码如下。 谢谢你的帮助!
PriorityQueue<SoftReference<Element<K, V>>> heap;
heap.add(new SoftReference<Element<K, V>>(newElement));
类Element的定义如下
class Element<K, V> implements Comparable<Element<K, V>>{
long timeStamp;
K key;
V val;
@Override
public int compareTo(Element<K, V> o) {
return new Long(timeStamp).compareTo(o.timeStamp);
}
Element(long ts, K key, V val){
this.timeStamp = ts;
this.key = key;
this.val = val;
}
}
答案 0 :(得分:1)
在没有自定义PriorityQueue
的情况下创建的Comparator
期望其元素实现Comparable
,而SoftReference
则不会。尝试使用可以比较PriorityQueue
的自定义Comparator
创建SoftReference
。