我正在尝试定义一个抽象类,该类具有运算符来比较该类的两个实例。然而,在具体化类时,我希望这些方法只比较相同类型的实例。像这样的东西
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 存在。
有没有办法可以在方法签名中指定类的类型?
提前致谢。