我想定义一个抽象类,它有运算符来比较两个类的实例。但是,在实现类的具体化时,我希望这些方法只能比较相同类型的实例。像这样的东西斯卡拉分型功能参数
abstract class ComparableSuper{
def <(other: ComparableSuper): Boolean
def <=(other: ComparableSuper): Boolean
def >(other: ComparableSuper): Boolean
def >=(other: ComparableSuper): Boolean
}
class Comparable (val a: Int) extends ComparableSuper {
def <(other: Comparable): Boolean = this.a < other.a
def >(other: Comparable): Boolean = this.a > other.a
def <=(other: Comparable): Boolean = this.a <= other.a
def >=(other: Comparable): Boolean = this.a >= other.a
}
当然这段代码不编译,因为我不重写抽象类中的方法。但是,如果我在方法中将Comparable更改为ComparableSuper,我不会保证字段a在那里。
有没有一种方法可以指定方法签名中类的类型?
在此先感谢。
非常感谢。有序似乎正是我所需要的。作为奖励,我还发现PartiallyOrdered,我需要在我的代码中的其他地方。 – lasaro