Я немного знаком с сортировкой в Scala с использованием Ordering
, однако я бы хотел отсортировать некоторые объекты, определенные в Java.Это Comparable
(не Comparable[T]
) и final
:
final class Term implements Comparable { ... }
(на самом деле это класс термина Lucene, и нет, я не могу изменить версию Lucene).
Сначала я надеялся, что где-то есть неявное:
terms.sorted //fail - no implicit ordering
Так, может быть, я мог бы сделать это заказанным?
class OrderedTerm extends Term with Ordering[Term] //fail - class is final
После этого я решил прибегнуть к мерзости использованияjava.util.Collections.sort
:
Collections.sort(terms) // error: inferred type arguments [org.apache.lucene.index.Term] do not conform to method sort's type parameter bounds [T <: java.lang.Comparable[_ >: T]]
Так что, похоже, даже это не работает, так как Scala строг в отношении параметров типа.На данный момент я вижу два пути: переопределить другое явное упорядочение (плохо) или написать сортировку на Java (не так плохо).
Есть ли способ сделать это чисто в Scala?Я предполагаю, что эта ситуация может быть распространена при использовании устаревших объектов Java?