我在 Scala 中正确输入时遇到了麻烦——我想做这样的事情,在类层次结构上强加 Ordered,但是子类允许 compare 方法只能使用它们自己类型的参数
abstract class Parent extends Ordered
class A extends Parent {
override def compare(that : A) = 1
}
class B extends Parent {
override def compare(that : B) = 1
}
以下工作,但我被迫永远将类型特异性强加给 Parent 及其子类。这只会成为正确推理的噩梦。
abstract class Parent[T <: Parent[_]] extends Ordered[T]
class A extends Parent[A] {
override def compare(that : A) = 1
}
class B extends Parent[A] {
override def compare(that : B) = 1
}
有没有更简单的方法来强制 Ordered[T] 的子类上的类型?