java.lang.ref.SoftReference无法强制转换为java.lang.Comparable

时间:2013-08-17 17:05:53

标签: java

我遇到了以下问题 线程“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;
        }
}

1 个答案:

答案 0 :(得分:1)

在没有自定义PriorityQueue的情况下创建的Comparator期望其元素实现Comparable,而SoftReference则不会。尝试使用可以比较PriorityQueue的自定义Comparator创建SoftReference