У меня возникла следующая проблема: Исключение из потока "main" java.lang.ClassCastException: java.lang.ref.SoftReference нельзя передать в java. lang.Comparablejava.lang.ref.SoftReference нельзя отнести к java.lang.Comparable
с кодом следующим образом. Благодарим за помощь!
PriorityQueue<SoftReference<Element<K, V>>> heap;
heap.add(new SoftReference<Element<K, V>>(newElement));
определение класса элемента заключается в следующем
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;
}
}
Естественно, ссылки не реализуют Comparable. Не имеет значения, на что ссылается эта ссылка, ее ссылка PriorityQueue хочет сравнить, а не упомянутый элемент. Ваш дизайн невозможен. – Durandal