Нельзя смешивать в Ordered
в этом случае, афаик ... Я попробовал это и столкнулся с трудностями, потому что compareTo
определен и там, и в java.lang.Comparable
.Компилятор жалуется, что Ordered
не использует override
в своем определении метода;Я не знаю, как обойти это.
Так определите неявное Ordering[Date]
.Вы можете поместить этот DateOrdering
объект куда угодно (например, в объект-компаньон).
import java.util.Date
implicit object DateOrdering extends Ordering[Date] {
def compare(x: Date, y: Date) = x compareTo y
}
Тогда в вашем коде:
import DateOrdering._
val a = new Date
Thread.sleep(1000)
val b = new Date
println(a < b) // prints true
println(a >= b) // prints false
Объект Ordering
содержит implicit def mkOrderingOps (lhs: T): Ops
.Класс Ops
содержит <
.>=
и т. Д., И это неявное определение является примером шаблона pimp my library для любого параметра типа Ordering (здесь любой экземпляр Date
).