为什么Scala的RichInt
扩展Comparable[Int]
而不是Comparable[RichInt]
?
我是Scala的新手。浏览Scala库代码时,我注意到类RichInt
扩展ScalaNumberProxy[Int]
,ScalaNumberProxy
扩展OrderedProxy
,OrderedProxy
扩展Ordered
,Ordered
扩展java.lang.Comparable
。所以我的理解是RichInt
(间接)延伸java.lang.Comparable[Int]
。
我的问题是为什么不扩展java.lang.Comparable[RichInt]
?
我提出这个问题的原因是在Java中,我会写这样的代码:
class A implements Comparable<A> {
@Override
public int compareTo(A other) {
//implement the method.
}
....
}
首先,我们需要知道RichInt
用于通过Int
中定义的implicit conversions为Predef类型提供辅助函数:
@inline implicit def intWrapper(x: Int) = new runtime.RichInt(x)
所以你可以使用它:
2.doubleValue()
2.shortValue()
...
对于你的问题:为什么它不扩展java.lang.Comparable [RichInt]
因为我们实际上是在Int
类型上运行,而不是RichInt
类型。喜欢:
2.compare(3)